1 #include <stdlib.h>
2 #include <sys/stat.h>
3 #include <cf3.defs.h>
4 #include <dbm_api.h>
5 #include <lastseen.h>
6 #include <known_dirs.h>
7
8 char CFWORKDIR[CF_BUFSIZE];
9
tests_setup(void)10 static void tests_setup(void)
11 {
12 static char env[] = /* Needs to be static for putenv() */
13 "CFENGINE_TEST_OVERRIDE_WORKDIR=/tmp/lastseen_migration_test.XXXXXX";
14
15 char *workdir = strchr(env, '=') + 1; /* start of the path */
16 assert(workdir - 1 && workdir[0] == '/');
17
18 mkdtemp(workdir);
19 strlcpy(CFWORKDIR, workdir, CF_BUFSIZE);
20 putenv(env);
21 mkdir(GetStateDir(), (S_IRWXU | S_IRWXG | S_IRWXO));
22 }
23
24 void UpdateLastSawHost(const char *hostkey, const char *address,
25 bool incoming, time_t timestamp);
26
main()27 int main()
28 {
29 tests_setup();
30
31 for (int i = 0; i < 1000000; ++i)
32 {
33 if ((i % 10000) == 0)
34 {
35 printf(".");
36 fflush(stdout);
37 }
38
39 char hostkey[50];
40 xsnprintf(hostkey, 50, "SHA-%040d", i);
41 char ip[50];
42 xsnprintf(ip, 50, "250.%03d.%03d.%03d", i / (256*256), (i / 256) % 256, i % 256);
43
44 UpdateLastSawHost(hostkey, ip, false, i);
45 UpdateLastSawHost(hostkey, ip, true, 2000000 - i);
46 }
47
48 char cmd[CF_BUFSIZE];
49 xsnprintf(cmd, CF_BUFSIZE, "rm -rf '%s'", CFWORKDIR);
50 system(cmd);
51
52 return 0;
53 }
54
55 /* STUBS */
56
FatalError(char * s,...)57 void FatalError(char *s, ...)
58 {
59 exit(42);
60 }
61
62 HashMethod CF_DEFAULT_DIGEST;
63 const char *const DAY_TEXT[] = {};
64 const char *const MONTH_TEXT[] = {};
65 const char *const SHIFT_TEXT[] = {};
66 pthread_mutex_t *cft_output;
67 char VIPADDRESS[CF_MAX_IP_LEN];
68 RSA *PUBKEY;
69
IdempPrependItem(Item ** liststart,const char * itemstring,const char * classes)70 Item *IdempPrependItem(Item **liststart, const char *itemstring, const char *classes)
71 {
72 exit(42);
73 }
74
IsItemIn(Item * list,const char * item)75 bool IsItemIn(Item *list, const char *item)
76 {
77 exit(42);
78 }
79
DeleteItemList(Item * item)80 void DeleteItemList(Item *item)
81 {
82 exit(42);
83 }
84
85 bool MINUSF;
86
MapAddress(char * addr)87 char *MapAddress(char *addr)
88 {
89 exit(42);
90 }
91
HashPrintSafe(char * dst,size_t dst_size,const unsigned char * digest,HashMethod type,bool use_prefix)92 char *HashPrintSafe(char *dst, size_t dst_size, const unsigned char *digest,
93 HashMethod type, bool use_prefix)
94 {
95 exit(42);
96 }
97
HashPubKey(const RSA * key,unsigned char digest[EVP_MAX_MD_SIZE+1],HashMethod type)98 void HashPubKey(const RSA *key, unsigned char digest[EVP_MAX_MD_SIZE + 1], HashMethod type)
99 {
100 exit(42);
101 }
102
ConstraintGetRvalValue(char * lval,Promise * promise,char type)103 void *ConstraintGetRvalValue(char *lval, Promise *promise, char type)
104 {
105 exit(42);
106 }
107