tizen 2.3 release
[framework/system/deviced.git] / src / logd / src / liblogd-db / tests / foreach-test.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <time.h>
5 #include <logd-db.h>
6 #include "macro.h"
7
8 enum logd_db_query cb(const struct logd_event_info *event, void *user_data)
9 {
10         struct tm st;
11         time_t time_sec;
12         char timestr[200];
13
14         time_sec = event->time;
15         localtime_r(&time_sec, &st);
16         strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S", &st);
17         printf("%s %s %s\n", event->application, timestr, event->message);
18
19         return LOGD_DB_QUERY_CONTINUE;
20 }
21
22 enum logd_db_query proc_stat_cb(const struct logd_proc_stat *proc_stat, void *user_data)
23 {
24         if (proc_stat->utime_power_cons + proc_stat->stime_power_cons == 0)
25                 return LOGD_DB_QUERY_STOP;
26
27         printf("%-50.50s %10f %d\n", proc_stat->application,
28                 proc_stat->utime_power_cons + proc_stat->stime_power_cons, proc_stat->is_active);
29
30         return LOGD_DB_QUERY_CONTINUE;
31 }
32
33 enum logd_db_query dev_stat_cb(const struct logd_device_stat *dev_stat, void *user_data)
34 {
35         printf("device %d\t%f\t%f\n", dev_stat->type, dev_stat->power_cons,
36                 dev_stat->cur_power_cons);
37
38         return LOGD_DB_QUERY_CONTINUE;
39 }
40
41 enum logd_db_query energy_efficiency_cb(const char *application,
42         float efficiency, void *user_data)
43 {
44         printf("%s %f\n", application, efficiency);
45
46         return LOGD_DB_QUERY_CONTINUE;
47 }
48
49 int main()
50 {
51         struct logd_events_filter filter;
52         struct logd_battery_info *info;
53         int *est_time = NULL;
54         int i;
55
56         memset(&filter, 0, sizeof(filter));
57         filter.from = 0;
58         filter.to = 2500000000U;
59         if (logd_foreach_events(&filter, &cb, NULL) < 0)
60                 puts("logd_foreach_events failed");
61
62         filter.objects_mask[LOGD_BATTERY_SOC] = 1;
63         printf("by object %d\n", LOGD_BATTERY_SOC);
64         if (logd_foreach_events(&filter, &cb, NULL) < 0)
65                 puts("logd_foreach_events failed");
66
67         filter.objects_mask[LOGD_CHARGER] = 1;
68         printf("by object %d\n", LOGD_CHARGER);
69         if (logd_foreach_events(&filter, &cb, NULL) < 0)
70                 puts("logd_foreach_events failed");
71
72         printf("by action %d\n", LOGD_ON);
73         filter.actions_mask[LOGD_ON] = 1;
74         if (logd_foreach_events(&filter, &cb, NULL) < 0)
75                 puts("logd_foreach_events failed");
76
77         printf("by action %d\n", LOGD_STOP);
78         filter.actions_mask[LOGD_STOP] = 1;
79         if (logd_foreach_events(&filter, &cb, NULL) < 0)
80                 puts("logd_foreach_events failed");
81
82         printf("all of db\n");
83         if (logd_foreach_events(NULL, &cb, NULL) < 0)
84                 puts("logd_foreach_events failed");
85
86         printf("\n\n%-50.50s %10s %10s\n", "Application", "power cons, uah", "is active");
87         if (logd_foreach_proc_stat(&proc_stat_cb, NULL) < 0)
88                 puts("logd_foreach_proc_stat failed");
89
90         if (logd_foreach_devices_stat(&dev_stat_cb, NULL) < 0)
91                 puts("logd_foreach_devices_stat failed");
92
93         if ((info = logd_get_battery_info()) == NULL) {
94                 puts("logd_get_battery_info failed");
95         } else {
96                 for (i = 0; i < info->n; ++i)
97                         printf("date %ld  level %d  k %f\n", info->levels[i].date,
98                                 info->levels[i].level, info->levels[i].k);
99                 printf("level = %f\n", logd_battery_level_at(info, time(NULL) - 5));
100                 printf("index when battery capacity was equal 100%% %d\n",
101                         logd_seek_battery_level(info, 10000));
102         }
103
104         logd_foreach_apps_energy_efficiency(energy_efficiency_cb, NULL);
105
106         if (logd_get_estimate_battery_lifetime(&est_time) == 0) {
107                 for (i = 0; i < LOGD_POWER_MODE_MAX; ++i)
108                         printf("%d\n", est_time[i]);
109                 free(est_time);
110         } else {
111                 puts("logd_get_estimate_battery_lifetime failed");
112         }
113
114         return 0;
115 }