testing: Add testing mechanics.

Expose machine.h APIs and introduce code to make testing
very easy.
This commit is contained in:
Alastair Poole 2020-06-18 15:36:39 +01:00
parent 6bd132a6b5
commit 8d1d9a7aaf
4 changed files with 109 additions and 34 deletions

View File

@ -4,10 +4,19 @@
* See LICENSE file for details.
*/
#define DEVELOPMENT 1
#include "config.h"
#include "evisum_config.h"
#include "ui/ui.h"
#if defined(DEVELOPMENT)
# include "system/machine.h"
# include "system/process.h"
# include "system/disks.h"
# include "system/filesystems.h"
#endif
static void
_win_del_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
@ -40,6 +49,47 @@ _win_add(void)
return ui;
}
#if defined(DEVELOPMENT)
static void
_test(void)
{
Sys_Info *inf;
Eina_List *procs, *disks;
Proc_Info *proc;
File_System *fs;
char *path, *mount;
printf("Starting testing\n");
inf = system_info_all_get();
system_info_all_free(inf);
eina_init();
ecore_init();
procs = proc_info_all_get();
EINA_LIST_FREE(procs, proc)
proc_info_free(proc);
disks = disks_get();
EINA_LIST_FREE(disks, path)
{
mount = disk_mount_point_get(path);
if (mount)
{
fs = file_system_info_get(mount);
if (fs)
file_system_info_free(fs);
free(mount);
}
free(path);
}
printf("Ending testing\n");
ecore_shutdown();
eina_shutdown();
}
#endif
int
main(int argc, char **argv)
{
@ -55,6 +105,13 @@ main(int argc, char **argv)
printf("Evisum version: %s\n", PACKAGE_VERSION);
exit(0);
}
#if defined(DEVELOPMENT)
else if (!strcmp(argv[i], "-t"))
{
_test();
exit(0);
}
#endif
}
eina_init();

View File

@ -369,8 +369,8 @@ _cpu_state_get(cpu_core_t **cores, int ncpu)
#endif
}
static cpu_core_t **
_cpu_usage_get(int *ncpu)
cpu_core_t **
system_cpu_usage_get(int *ncpu)
{
cpu_core_t **cores;
int i;
@ -405,8 +405,8 @@ _meminfo_parse_line(const char *line)
#endif
static void
_memory_usage_get(meminfo_t *memory)
void
system_memory_usage_get(meminfo_t *memory)
{
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
size_t len = 0, miblen;
@ -628,10 +628,10 @@ swap_out:
#endif
}
static void
_sensors_thermal_get(Sys_Info *info)
sensor_t **
system_sensors_thermal_get(int *sensor_count)
{
sensor_t **sensors = info->sensors;
sensor_t **sensors = NULL;
#if defined(__OpenBSD__)
sensor_t *sensor;
int mibs[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
@ -667,8 +667,8 @@ _sensors_thermal_get(Sys_Info *info)
if (snsr.type != SENSOR_TEMP)
continue;
sensors = realloc(sensors, 1 + info->sensor_count * sizeof(sensor_t *));
sensors[info->sensor_count++] = sensor = calloc(1, sizeof(sensor_t));
sensors = realloc(sensors, (1 + *sensor_count) * sizeof(sensor_t *));
sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t));
sensor->name = strdup(snsrdev.xname);
sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C)
}
@ -679,8 +679,8 @@ _sensors_thermal_get(Sys_Info *info)
if ((sysctlbyname("hw.acpi.thermal.tz0.temperature", &value, &len, NULL, 0)) != -1)
{
sensors = realloc(sensors, 1 + info->sensor_count * sizeof(sensor_t *));
sensors[info->sensor_count++] = sensor = calloc(1, sizeof(sensor_t));
sensors = realloc(sensors, (1 + *sensor_count) * sizeof(sensor_t *));
sensors[(*sensor_count)++] = sensor = calloc(1, sizeof(sensor_t));
sensor->name = strdup("hw.acpi.thermal.tz0");
sensor->value = (float) (value - 2732) / 10;
}
@ -692,7 +692,7 @@ _sensors_thermal_get(Sys_Info *info)
int i, n;
n = scandir("/sys/class/thermal", &names, 0, alphasort);
if (n < 0) return;
if (n < 0) return NULL;
for (i = 0; i < n; i++)
{
@ -708,8 +708,8 @@ _sensors_thermal_get(Sys_Info *info)
if (type)
{
sensors =
realloc(sensors, 1 + info->sensor_count * sizeof(sensor_t *));
sensors[info->sensor_count++] =
realloc(sensors, (1 + (*sensor_count)) * sizeof(sensor_t *));
sensors[(*sensor_count)++] =
sensor = calloc(1, sizeof(sensor_t));
sensor->name = strdup(names[i]->d_name);
@ -733,7 +733,7 @@ _sensors_thermal_get(Sys_Info *info)
free(names);
#elif defined(__MacOS__)
#endif
info->sensors = sensors;
return sensors;
}
static int
@ -1012,8 +1012,8 @@ _battery_state_get(power_t *power)
#endif
}
static void
_power_state_get(power_t *power)
void
system_power_state_get(power_t *power)
{
int i;
#if defined(__OpenBSD__)
@ -1167,8 +1167,8 @@ _linux_generic_network_status(unsigned long int *in,
#endif
static void
_network_transfer_get(Sys_Info *info)
void
system_network_transfer_get(network_t *usage)
{
unsigned long first_in = 0, first_out = 0;
unsigned long last_in = 0, last_out = 0;
@ -1185,16 +1185,16 @@ _network_transfer_get(Sys_Info *info)
usleep(1000000);
_freebsd_generic_network_status(&last_in, &last_out);
#endif
info->incoming = last_in - first_in;
info->outgoing = last_out - first_out;
usage->incoming = last_in - first_in;
usage->outgoing = last_out - first_out;
}
static void *
_network_transfer_get_thread_cb(void *arg)
{
Sys_Info *info = arg;
network_t *usage = arg;
_network_transfer_get(info);
system_network_transfer_get(usage);
return (void *)0;
}
@ -1214,7 +1214,8 @@ system_info_all_free(Sys_Info *info)
for (i = 0; i < info->sensor_count; i++)
{
snsr = info->sensors[i];
if (snsr->name) free(snsr->name);
if (snsr->name)
free(snsr->name);
free(snsr);
}
if (info->sensors)
@ -1247,16 +1248,16 @@ system_info_all_get(void)
info = calloc(1, sizeof(Sys_Info));
if (!info) return NULL;
info->cores = _cpu_usage_get(&info->cpu_count);
info->cores = system_cpu_usage_get(&info->cpu_count);
_memory_usage_get(&info->memory);
system_memory_usage_get(&info->memory);
error = pthread_create(&tid, NULL, _network_transfer_get_thread_cb, info);
error = pthread_create(&tid, NULL, _network_transfer_get_thread_cb, &info->network_usage);
if (error)
_network_transfer_get(info);
system_network_transfer_get(&info->network_usage);
_power_state_get(&info->power);
_sensors_thermal_get(info);
system_power_state_get(&info->power);
info->sensors = system_sensors_thermal_get(&info->sensor_count);
if (!error)
{

View File

@ -52,6 +52,12 @@ typedef struct
int ac_mibs[5];
} power_t;
typedef struct
{
unsigned long incoming;
unsigned long outgoing;
} network_t;
typedef struct Sys_Info Sys_Info;
struct Sys_Info
{
@ -63,8 +69,7 @@ struct Sys_Info
int sensor_count;
sensor_t **sensors;
unsigned long incoming;
unsigned long outgoing;
network_t network_usage;
};
Sys_Info *
@ -76,4 +81,16 @@ system_info_all_free(Sys_Info *);
int
system_cpu_online_count_get();
cpu_core_t **
system_cpu_usage_get(int *ncpu);
void
system_memory_usage_get(meminfo_t *memory);
void
system_power_state_get(power_t *power);
void
system_network_transfer_get(network_t *usage);
#endif

View File

@ -287,8 +287,8 @@ ui_tab_misc_update(Ui *ui, Sys_Info *info)
evas_object_size_hint_weight_set(box, EXPAND, EXPAND);
evas_object_show(box);
_network_usage_add(ui, box, info->incoming, EINA_TRUE);
_network_usage_add(ui, box, info->outgoing, EINA_FALSE);
_network_usage_add(ui, box, info->network_usage.incoming, EINA_TRUE);
_network_usage_add(ui, box, info->network_usage.outgoing, EINA_FALSE);
_separator_add(box);
if (_battery_usage_add(box, &info->power))
_separator_add(box);