Move the JSON initialization/finalization insode the API.

This commit is contained in:
Jef Poskanzer 2013-03-08 20:56:52 -08:00
parent a5621dd908
commit e96ab74093
7 changed files with 56 additions and 35 deletions

View File

@ -235,7 +235,7 @@ iperf_set_test_role(struct iperf_test *ipt, char role)
void
iperf_set_test_server_hostname(struct iperf_test *ipt, char *server_hostname)
{
ipt->server_hostname = server_hostname;
ipt->server_hostname = strdup( server_hostname );
}
void

View File

@ -9,6 +9,7 @@
#include <errno.h>
#include <setjmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@ -20,6 +21,7 @@
#include "iperf.h"
#include "iperf_api.h"
#include "iperf_util.h"
#include "locale.h"
#include "net.h"
#include "timer.h"
@ -186,6 +188,18 @@ iperf_run_client(struct iperf_test * test)
fd_set read_set, write_set;
struct timeval now;
if (test->json_output)
if (iperf_json_start(test) < 0)
return -1;
if (test->json_output) {
cJSON_AddItemToObject(test->json_start, "version", cJSON_CreateString(version));
cJSON_AddItemToObject(test->json_start, "system_info", cJSON_CreateString(get_system_info()));
} else if (test->verbose) {
printf("%s\n", version);
system("uname -a");
}
/* Start the client and connect to the server */
if (iperf_connect(test) < 0) {
return -1;
@ -250,5 +264,11 @@ iperf_run_client(struct iperf_test * test)
}
}
if (test->json_output) {
if (iperf_json_finish(test) < 0)
return -1;
} else
printf("\niperf Done.\n");
return 0;
}

View File

@ -282,6 +282,18 @@ iperf_run_server(struct iperf_test *test)
struct iperf_stream *sp;
struct timeval now;
if (test->json_output)
if (iperf_json_start(test) < 0)
return -1;
if (test->json_output) {
cJSON_AddItemToObject(test->json_start, "version", cJSON_CreateString(version));
cJSON_AddItemToObject(test->json_start, "system_info", cJSON_CreateString(get_system_info()));
} else if (test->verbose) {
printf("%s\n", version);
system("uname -a");
}
// Open socket and listen
if (iperf_server_listen(test) < 0) {
return -1;
@ -396,5 +408,10 @@ iperf_run_server(struct iperf_test *test)
close(test->ctrl_sck);
close(test->listener);
if (test->json_output) {
if (iperf_json_finish(test) < 0)
return -1;
}
return 0;
}

View File

@ -180,6 +180,21 @@ cpu_util(double *pcpu)
*pcpu = ((ctemp - clast) / timediff) * 100;
}
char*
get_system_info(void)
{
FILE* fp;
static char buf[1000];
fp = popen("uname -a", "r");
if (fp == NULL)
return NULL;
fgets(buf, sizeof(buf), fp);
pclose(fp);
return buf;
}
/* Helper routine for building cJSON objects in a printf-like manner.
**
** Sample call:

View File

@ -26,6 +26,8 @@ int delay(int64_t ns);
void cpu_util(double *);
char* get_system_info(void);
cJSON* iperf_json_printf(const char *format, ...);
#endif

View File

@ -106,36 +106,10 @@ main(int argc, char **argv)
return 0;
}
static char*
get_system_info(void)
{
FILE* fp;
static char buf[1000];
fp = popen("uname -a", "r");
if (fp == NULL)
return NULL;
fgets(buf, sizeof(buf), fp);
pclose(fp);
return buf;
}
/**************************************************************************/
int
iperf_run(struct iperf_test * test)
{
if (test->json_output)
if (iperf_json_start(test) < 0)
return -1;
if (test->json_output) {
cJSON_AddItemToObject(test->json_start, "version", cJSON_CreateString(version));
cJSON_AddItemToObject(test->json_start, "system_info", cJSON_CreateString(get_system_info()));
} else if (test->verbose) {
printf("%s\n", version);
system("uname -a");
}
switch (test->role) {
case 's':
for (;;) {
@ -155,12 +129,5 @@ iperf_run(struct iperf_test * test)
break;
}
if (test->json_output) {
if (iperf_json_finish(test) < 0)
return -1;
} else
printf("\niperf Done.\n");
return 0;
}

View File

@ -8,4 +8,4 @@
*/
#define IPERF_VERSION "3.0-BETA5"
#define IPERF_VERSION_DATE "01 Feb 2013"
#define IPERF_VERSION_DATE "01 March 2013"