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