Esempio n. 1
0
END_TEST

START_TEST(ibwflush_success)
{
	cfg.maxbw = 0;
	ck_assert_int_eq(ibwadd("name1", 1), 1);
	ck_assert_int_eq(ibwadd("name2", 2), 1);

	ck_assert_int_eq(ibwget("name1"), 1);
	ck_assert_int_eq(ibwget("name2"), 2);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);

	ibwflush();

	ck_assert_int_eq(ibwget("name1"), -1);
	ck_assert_int_eq(ibwget("name2"), -1);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);

	ck_assert_int_eq(ibwadd("name1", 1), 1);
	ck_assert_int_eq(ibwadd("name2", 2), 1);

	ck_assert_int_eq(ibwget("name1"), 1);
	ck_assert_int_eq(ibwget("name2"), 2);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);
}
Esempio n. 2
0
END_TEST

START_TEST(ibwlist_filled)
{
	cfg.maxbw = 0;
	ck_assert_int_eq(ibwadd("name1", 1), 1);
	ck_assert_int_eq(ibwadd("name2", 2), 1);
	suppress_output();
	ibwlist();
}
Esempio n. 3
0
END_TEST

START_TEST(printcfgfile_default)
{
	defaultcfg();
	ck_assert_int_eq(ibwadd("name1", 1), 1);
	ck_assert_int_eq(ibwadd("name2", 2), 1);
	suppress_output();
	printcfgfile();
}
Esempio n. 4
0
END_TEST

START_TEST(ibwadd_single_success)
{
	cfg.maxbw = 0;
	ck_assert_int_eq(ibwadd("newinterface", 1), 1);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);
	ck_assert_int_eq(ibwget("newinterface"), 1);
}
Esempio n. 5
0
END_TEST

START_TEST(ibwadd_update_success)
{
	cfg.maxbw = 0;
	ck_assert_int_eq(ibwadd("name1", 1), 1);
	ck_assert_int_eq(ibwadd("name2", 2), 1);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);

	ck_assert_int_eq(ibwget("name1"), 1);
	ck_assert_int_eq(ibwget("name2"), 2);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);

	ck_assert_int_eq(ibwadd("name2", 5), 1);
	ck_assert_int_eq(ibwadd("name1", 4), 1);

	ck_assert_int_eq(ibwget("name1"), 4);
	ck_assert_int_eq(ibwget("name2"), 5);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);
}
Esempio n. 6
0
END_TEST

START_TEST(cachestatus_full)
{
	int i;
	char buffer[8];
	initdb();
	defaultcfg();
	disable_logprints();
	ck_assert_int_eq(cachecount(), 0);
	for (i=1; i<=50; i++) {
		snprintf(buffer, 8, "name%d", i);
		ck_assert_int_eq(cacheadd(buffer, 0), 1);
		ck_assert_int_eq(ibwadd(buffer, 50-i), 1);
	}
	ck_assert_int_eq(cachecount(), 50);
	cachestatus();
}
Esempio n. 7
0
END_TEST

START_TEST(parseifinfo_1kb_change)
{
	initdb();
	data.btime = getbtime();
	data.lastupdated -= 100;
	data.currx = 1024;
	data.curtx = 1024;

	strcpy(data.interface, "eth0");
	ck_assert_int_eq(ibwadd("eth0", 10), 1);

	strcpy(ifinfo.name, "eth0");
	ifinfo.filled = 1;
	ifinfo.rx = 2048;
	ifinfo.tx = 2048;
	ifinfo.rxp = ifinfo.txp = 0;

	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 2048);
	ck_assert_int_eq(ifinfo.tx, 2048);
	ck_assert_int_eq(ifinfo.rxp, 0);
	ck_assert_int_eq(ifinfo.txp, 0);

	ck_assert_int_eq(data.day[0].rx, 0);
	ck_assert_int_eq(data.day[0].tx, 0);
	ck_assert_int_eq(data.day[0].rxk, 1);
	ck_assert_int_eq(data.day[0].txk, 1);

	ck_assert_int_eq(data.month[0].rx, 0);
	ck_assert_int_eq(data.month[0].tx, 0);
	ck_assert_int_eq(data.month[0].rxk, 1);
	ck_assert_int_eq(data.month[0].txk, 1);

	ck_assert_int_eq(data.totalrx, 0);
	ck_assert_int_eq(data.totaltx, 0);
	ck_assert_int_eq(data.totalrxk, 1);
	ck_assert_int_eq(data.totaltxk, 1);
	ck_assert_int_eq(data.currx, 2048);
	ck_assert_int_eq(data.curtx, 2048);
}
Esempio n. 8
0
END_TEST

START_TEST(parseifinfo_hitting_maxbw_limit_causes_sync)
{
	initdb();
	data.btime = getbtime();
	data.lastupdated -= 1;
	data.currx = 1024;
	data.curtx = 1024;

	strcpy(data.interface, "eth0");
	ck_assert_int_eq(ibwadd("eth0", 10), 1);

	strcpy(ifinfo.name, "eth0");
	ifinfo.filled = 1;
	ifinfo.rx = 123456789;
	ifinfo.tx = 123456789;
	ifinfo.rxp = ifinfo.txp = 0;

	debug = 1;
	suppress_output();
	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 123456789);
	ck_assert_int_eq(ifinfo.tx, 123456789);
	ck_assert_int_eq(ifinfo.rxp, 0);
	ck_assert_int_eq(ifinfo.txp, 0);

	ck_assert_int_eq(data.day[0].rx, 0);
	ck_assert_int_eq(data.day[0].tx, 0);
	ck_assert_int_eq(data.day[0].rxk, 0);
	ck_assert_int_eq(data.day[0].txk, 0);

	ck_assert_int_eq(data.totalrx, 0);
	ck_assert_int_eq(data.totaltx, 0);
	ck_assert_int_eq(data.totalrxk, 0);
	ck_assert_int_eq(data.totaltxk, 0);
	ck_assert_int_eq(data.currx, 123456789);
	ck_assert_int_eq(data.curtx, 123456789);
}
Esempio n. 9
0
END_TEST

START_TEST(parseifinfo_long_update_interval_causes_sync)
{
	initdb();
	data.btime = getbtime();
	data.lastupdated -= (60*MAXUPDATEINTERVAL + 10);

	strcpy(data.interface, "eth0");
	ck_assert_int_eq(ibwadd("eth0", 10), 1);

	strcpy(ifinfo.name, "eth0");
	ifinfo.filled = 1;
	ifinfo.rx = 1024;
	ifinfo.tx = 1024;
	ifinfo.rxp = ifinfo.txp = 0;

	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 1024);
	ck_assert_int_eq(ifinfo.tx, 1024);
	ck_assert_int_eq(ifinfo.rxp, 0);
	ck_assert_int_eq(ifinfo.txp, 0);

	ck_assert_int_eq(data.day[0].rx, 0);
	ck_assert_int_eq(data.day[0].tx, 0);
	ck_assert_int_eq(data.day[0].rxk, 0);
	ck_assert_int_eq(data.day[0].txk, 0);

	ck_assert_int_eq(data.totalrx, 0);
	ck_assert_int_eq(data.totaltx, 0);
	ck_assert_int_eq(data.totalrxk, 0);
	ck_assert_int_eq(data.totaltxk, 0);
	ck_assert_int_eq(data.currx, 1024);
	ck_assert_int_eq(data.curtx, 1024);
}
Esempio n. 10
0
END_TEST

START_TEST(ibwadd_multi_success)
{
	cfg.maxbw = 0;
	ck_assert_int_eq(ibwadd("name1", 1), 1);
	ck_assert_int_eq(ibwadd("name2", 2), 1);
	ck_assert_int_eq(ibwadd("name3", 3), 1);
	ck_assert_int_eq(ibwadd("name4", 2), 1);
	ck_assert_int_eq(ibwadd("name5", 1), 1);
	ck_assert_int_eq(ibwadd("name6", 10), 1);

	ck_assert_int_eq(ibwget("does_not_exist"), -1);
	ck_assert_int_eq(ibwget("name1"), 1);
	ck_assert_int_eq(ibwget("name3"), 3);
	ck_assert_int_eq(ibwget("name4"), 2);
	ck_assert_int_eq(ibwget("name6"), 10);
	ck_assert_int_eq(ibwget("name2"), 2);
	ck_assert_int_eq(ibwget("name5"), 1);
	ck_assert_int_eq(ibwget("name1"), 1);
	ck_assert_int_eq(ibwget("does_not_exist"), -1);
}
Esempio n. 11
0
END_TEST

START_TEST(parseifinfo_multiple_parses)
{
	initdb();
	data.btime = getbtime();
	data.lastupdated -= 20;
	data.currx = 0;
	data.curtx = 0;

	strcpy(data.interface, "eth0");
	ck_assert_int_eq(ibwadd("eth0", 10), 1);

	strcpy(ifinfo.name, "eth0");
	ifinfo.filled = 1;
	ifinfo.rx = 2049;
	ifinfo.tx = 2049;
	ifinfo.rxp = ifinfo.txp = 0;

	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 2049);
	ck_assert_int_eq(ifinfo.tx, 2049);
	ck_assert_int_eq(ifinfo.rxp, 1);
	ck_assert_int_eq(ifinfo.txp, 1);

	ck_assert_int_eq(data.day[0].rx, 0);
	ck_assert_int_eq(data.day[0].tx, 0);
	ck_assert_int_eq(data.day[0].rxk, 2);
	ck_assert_int_eq(data.day[0].txk, 2);

	ck_assert_int_eq(data.totalrx, 0);
	ck_assert_int_eq(data.totaltx, 0);
	ck_assert_int_eq(data.totalrxk, 2);
	ck_assert_int_eq(data.totaltxk, 2);
	ck_assert_int_eq(data.currx, 2048);
	ck_assert_int_eq(data.curtx, 2048);

	data.lastupdated -= 15;

	ifinfo.rx = 4098;
	ifinfo.tx = 4098;
	ifinfo.rxp = ifinfo.txp = 0;

	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 4098);
	ck_assert_int_eq(ifinfo.tx, 4098);
	ck_assert_int_eq(ifinfo.rxp, 2);
	ck_assert_int_eq(ifinfo.txp, 2);

	ck_assert_int_eq(data.day[0].rx, 0);
	ck_assert_int_eq(data.day[0].tx, 0);
	ck_assert_int_eq(data.day[0].rxk, 4);
	ck_assert_int_eq(data.day[0].txk, 4);

	ck_assert_int_eq(data.totalrx, 0);
	ck_assert_int_eq(data.totaltx, 0);
	ck_assert_int_eq(data.totalrxk, 4);
	ck_assert_int_eq(data.totaltxk, 4);
	ck_assert_int_eq(data.currx, 4096);
	ck_assert_int_eq(data.curtx, 4096);

	data.lastupdated -= 10;

	ifinfo.rx = 8192;
	ifinfo.tx = 8192;
	ifinfo.rxp = ifinfo.txp = 0;

	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 8192);
	ck_assert_int_eq(ifinfo.tx, 8192);
	ck_assert_int_eq(ifinfo.rxp, 0);
	ck_assert_int_eq(ifinfo.txp, 0);

	ck_assert_int_eq(data.day[0].rx, 0);
	ck_assert_int_eq(data.day[0].tx, 0);
	ck_assert_int_eq(data.day[0].rxk, 8);
	ck_assert_int_eq(data.day[0].txk, 8);

	ck_assert_int_eq(data.totalrx, 0);
	ck_assert_int_eq(data.totaltx, 0);
	ck_assert_int_eq(data.totalrxk, 8);
	ck_assert_int_eq(data.totaltxk, 8);
	ck_assert_int_eq(data.currx, 8192);
	ck_assert_int_eq(data.curtx, 8192);

	data.lastupdated -= 5;

	ifinfo.rx = 1048576;
	ifinfo.tx = 1048576;
	ifinfo.rxp = ifinfo.txp = 0;

	parseifinfo(0);

	ck_assert_int_eq(ifinfo.rx, 1048576);
	ck_assert_int_eq(ifinfo.tx, 1048576);
	ck_assert_int_eq(ifinfo.rxp, 0);
	ck_assert_int_eq(ifinfo.txp, 0);

	ck_assert_int_eq(data.day[0].rx, 1);
	ck_assert_int_eq(data.day[0].tx, 1);
	ck_assert_int_eq(data.day[0].rxk, 0);
	ck_assert_int_eq(data.day[0].txk, 0);

	ck_assert_int_eq(data.totalrx, 1);
	ck_assert_int_eq(data.totaltx, 1);
	ck_assert_int_eq(data.totalrxk, 0);
	ck_assert_int_eq(data.totaltxk, 0);
	ck_assert_int_eq(data.currx, 1048576);
	ck_assert_int_eq(data.curtx, 1048576);
}
Esempio n. 12
0
File: cfg.c Progetto: zyklide/vnstat
int ibwcfgread(FILE *fd)
{
	char cfgline[512], name[512], value[512];
	int i, j, linelen, count = 0, ivalue;

	/* start from value search from first line */
	rewind(fd);

	/* cycle all lines */
	while (!feof(fd)) {

		cfgline[0] = '\0';

		/* get current line */
		if (fgets(cfgline, 512, fd)==NULL) {
			break;
		}

		linelen = (int)strlen(cfgline);

		if (linelen>8 && cfgline[0]!='#') {

			if (strncasecmp(cfgline, "MaxBW", 5)==0) {

				/* clear name and value buffers */
				for (j=0; j<512; j++) {
					name[j]=value[j]='\0';
				}

				/* get interface name */
				j=0;
				for (i=5; i<linelen; i++) {
					if (cfgline[i]==' ' || cfgline[i]=='=' || cfgline[i]=='\t' || cfgline[i]=='\n' || cfgline[i]=='\r') {
						break;
					} else {
						name[j]=cfgline[i];
						j++;
					}
				}

				/* get new line if no usable name was found */
				if (strlen(name)==0) {
					continue;
				}

				/* search value */
				j=0;
				for (i++; i<linelen; i++) {
					if (cfgline[i]=='\n' || cfgline[i]=='\r') {
						break;
					} else if (cfgline[i]=='\"') {
						if (j==0) {
							continue;
						} else {
							break;
						}
					} else {
						if (j==0 && (cfgline[i]==' ' || cfgline[i]=='=' || cfgline[i]=='\t')) {
							continue;
						} else {
							value[j]=cfgline[i];
							j++;
						}
					}
				}

				/* get new line if no usable value was found */
				if ((strlen(value)==0) || (!isdigit(value[0])) ) {
					continue;
				}

				/* add interface and limit to list if value is within limits */
				ivalue = atoi(value);
				if (ivalue<0 || ivalue>10000) {
					snprintf(errorstring, 512, "Invalid value \"%d\" for MaxBW%s, ignoring parameter.", ivalue, name);
					printe(PT_Config);
				} else {
					ibwadd(name, ivalue);
				}
			}
		}
	}

	return count;
}