5cf1e2ca05dd4c2bc8eef11852890dcbd9559264
[oweals/gnunet.git] / src / testbed / test_testbed_api_sd.c
1 /*
2       This file is part of GNUnet
3       Copyright (C) 2008--2013 GNUnet e.V.
4
5       GNUnet is free software: you can redistribute it and/or modify it
6       under the terms of the GNU General Public License as published
7       by the Free Software Foundation, either version 3 of the License,
8       or (at your option) any later version.
9
10       GNUnet is distributed in the hope that it will be useful, but
11       WITHOUT ANY WARRANTY; without even the implied warranty of
12       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13       Affero General Public License for more details.
14  */
15
16
17 /**
18  * @file testbed/testbed_api_sd.c
19  * @brief test cases for calculating standard deviation
20  * @author Sree Harsha Totakura <sreeharsha@totakura.in>
21  */
22
23 #include "platform.h"
24 #include "gnunet_util_lib.h"
25 #include "testbed_api_sd.h"
26
27 /**
28  * Global return value
29  */
30 static int ret;
31
32 /**
33  * Main run function.
34  *
35  * @param cls NULL
36  * @param args arguments passed to GNUNET_PROGRAM_run
37  * @param cfgfile the path to configuration file
38  * @param cfg the configuration file handle
39  */
40 static void
41 run (void *cls, char *const *args, const char *cfgfile,
42      const struct GNUNET_CONFIGURATION_Handle *config)
43 {
44   struct SDHandle *h = GNUNET_TESTBED_SD_init_ (20);
45   int sd;
46
47   ret = 0;
48   GNUNET_TESTBED_SD_add_data_ (h, 40);
49   if (GNUNET_SYSERR != GNUNET_TESTBED_SD_deviation_factor_ (h, 10, &sd))
50   {
51     GNUNET_break (0);
52     ret = 1;
53     goto err;
54   }
55   GNUNET_TESTBED_SD_add_data_ (h, 30);
56   if (GNUNET_SYSERR == GNUNET_TESTBED_SD_deviation_factor_ (h, 80, &sd))
57   {
58     GNUNET_break (0);
59     ret = 1;
60     goto err;
61   }
62   GNUNET_TESTBED_SD_add_data_ (h, 40);
63   if ((GNUNET_SYSERR == GNUNET_TESTBED_SD_deviation_factor_ (h, 30, &sd))
64       || (-2 != sd))
65   {
66     GNUNET_break (0);
67     ret = 1;
68     goto err;
69   }
70   GNUNET_TESTBED_SD_add_data_ (h, 10);
71   GNUNET_TESTBED_SD_add_data_ (h, 30);
72   if ((GNUNET_SYSERR == GNUNET_TESTBED_SD_deviation_factor_ (h, 60, &sd))
73       || (3 != sd))
74   {
75     GNUNET_break (0);
76     ret = 1;
77     goto err;
78   }
79
80  err:
81   GNUNET_TESTBED_SD_destroy_ (h);
82 }
83
84
85 /**
86  * Main function
87  */
88 int
89 main (int argc, char **argv)
90 {
91   struct GNUNET_GETOPT_CommandLineOption options[] = {
92     GNUNET_GETOPT_OPTION_END
93   };
94   int result;
95
96   result = GNUNET_SYSERR;
97   result =
98       GNUNET_PROGRAM_run (argc, argv,
99                           "test_testbed_api_sd", "nohelp", options, &run, NULL);
100   if ((GNUNET_OK != result))
101     return 1;
102   return ret;
103 }
104
105 /* end of test_testbed_api_sd.c */