[Git][NTPsec/ntpsec][master] 2 commits: Change how test are run and built.
Amar Takhar
gitlab at mg.gitlab.com
Fri Nov 20 13:34:56 UTC 2015
Amar Takhar pushed to branch master at NTPsec / ntpsec
Commits:
d36e5de4 by Amar Takhar at 2015-11-19T18:25:46Z
Change how test are run and built.
* Tests now run automatically after building
* There is now a full dependency chain. If you touch any file related to a
test it will rebuild and re-run when you do a build.
* waf check now runs all tests implicitly.
* waf check -v will dump logs.
- - - - -
9fb1e025 by Amar Takhar at 2015-11-19T19:11:29Z
Add support for ntpdig/packetHandling.c
* This still has issues which I will work on fleshing out after everything is
converted.
- - - - -
6 changed files:
- pylib/waf.py
- tests/ntpdig/tests_main.c → tests/common/tests_main.c
- tests/ntpdig/tests_main.h → tests/common/tests_main.h
- tests/ntpdig/packetHandling.c
- tests/wscript
- wscript
Changes:
=====================================
pylib/waf.py
=====================================
--- a/pylib/waf.py
+++ b/pylib/waf.py
@@ -70,6 +70,7 @@ def manpage(ctx, section, source):
@conf
def ntp_test(ctx, **kwargs):
+ bldnode = ctx.bldnode.abspath()
tg = ctx(**kwargs)
if hasattr(tg, "test_data"):
@@ -77,4 +78,4 @@ def ntp_test(ctx, **kwargs):
else:
test_data = None
- ctx.env.TEST_BIN += [("%s/tests/%s" % (ctx.bldnode.abspath(), tg.target), test_data)]
+ tg.ut_exec = ["%s/tests/%s" % (bldnode, tg.target), "-v", tg.test_data]
=====================================
tests/ntpdig/tests_main.c → tests/common/tests_main.c
=====================================
--- a/tests/ntpdig/tests_main.c
+++ b/tests/common/tests_main.c
@@ -24,8 +24,19 @@ const char* tests_main_args(int arg)
static void RunAllTests(void)
{
+
+#ifdef TEST_NTPDIG
RUN_TEST_GROUP(crypto);
RUN_TEST_GROUP(keyFile);
+// RUN_TEST_GROUP(kodDatabase);
+// RUN_TEST_GROUP(kodFile);
+ RUN_TEST_GROUP(packetHandling);
+#endif
+
+#ifdef TEST_LIBNTP_SSL
+ RUN_TEST_GROUP(ssl_init);
+#endif
+
}
int main(int argc, const char * argv[]) {
=====================================
tests/ntpdig/tests_main.h → tests/common/tests_main.h
=====================================
--- a/tests/ntpdig/tests_main.h
+++ b/tests/common/tests_main.h
=====================================
tests/ntpdig/packetHandling.c
=====================================
--- a/tests/ntpdig/packetHandling.c
+++ b/tests/ntpdig/packetHandling.c
@@ -8,6 +8,12 @@
#include "networking.h"
#include "ntp.h"
+#include <sys/time.h>
+
+#define GETTIMEOFDAY gettimeofday /* XXX: why? */
+#define EXPECT_DOUBLE_EQ(a, b) {} /* XXX: Not part of Unity */
+
+
static bool LfpEquality(const l_fp* expected, const l_fp* actual) {
if (L_ISEQU(expected, actual)) {
return true;
@@ -131,8 +137,9 @@ TEST(packetHandling, OffsetCalculationPositiveOffset) {
EXPECT_DOUBLE_EQ(1.125015, synch_distance);
}
-TEST(main, OffsetCalculationNegativeOffset) {
- pkt rpkt;
+TEST(packetHandling, OffsetCalculationNegativeOffset) {
+ struct pkt rpkt;
+ struct timeval dst;
rpkt.precision = -1;
rpkt.rootdelay = HTONS_FP(DTOUFP(0.5));
@@ -162,7 +169,6 @@ TEST(main, OffsetCalculationNegativeOffset) {
// T4 - Destination timestamp as standard timeval
tmp.l_ui = 1000000003UL;
tmp.l_uf = 0UL;
- timeval dst;
TSTOTV(&tmp, &dst);
dst.tv_sec -= JAN_1970;
@@ -174,8 +180,8 @@ TEST(main, OffsetCalculationNegativeOffset) {
EXPECT_DOUBLE_EQ(1.3333483333333334, synch_distance);
}
-TEST(main, HandleUnusableServer) {
- pkt rpkt;
+TEST(packetHandling, HandleUnusableServer) {
+ struct pkt rpkt;
sockaddr_u host;
int rpktl;
@@ -185,8 +191,8 @@ TEST(main, HandleUnusableServer) {
TEST_ASSERT_EQUAL(-1, handle_pkt(rpktl, &rpkt, &host, ""));
}
-TEST(main, HandleUnusablePacket) {
- pkt rpkt;
+TEST(packetHandling, HandleUnusablePacket) {
+ struct pkt rpkt;
sockaddr_u host;
int rpktl;
@@ -196,8 +202,8 @@ TEST(main, HandleUnusablePacket) {
TEST_ASSERT_EQUAL(1, handle_pkt(rpktl, &rpkt, &host, ""));
}
-TEST(main, HandleServerAuthenticationFailure) {
- pkt rpkt;
+TEST(packetHandling, HandleServerAuthenticationFailure) {
+ struct pkt rpkt;
sockaddr_u host;
int rpktl;
@@ -207,13 +213,13 @@ TEST(main, HandleServerAuthenticationFailure) {
TEST_ASSERT_EQUAL(1, handle_pkt(rpktl, &rpkt, &host, ""));
}
-TEST(main, HandleKodDemobilize) {
+TEST(packetHandling, HandleKodDemobilize) {
const char * HOSTNAME = "192.0.2.1";
const char * REASON = "DENY";
- pkt rpkt;
+ struct pkt rpkt;
sockaddr_u host;
int rpktl;
- kod_entry * entry;
+ struct kod_entry * entry;
rpktl = KOD_DEMOBILIZE;
ZERO(rpkt);
@@ -231,8 +237,8 @@ TEST(main, HandleKodDemobilize) {
TEST_ASSERT_TRUE(memcmp(REASON, entry->type, 4) == 0);
}
-TEST(main, HandleKodRate) {
- pkt rpkt;
+TEST(packetHandling, HandleKodRate) {
+ struct pkt rpkt;
sockaddr_u host;
int rpktl;
@@ -242,15 +248,15 @@ TEST(main, HandleKodRate) {
TEST_ASSERT_EQUAL(1, handle_pkt(rpktl, &rpkt, &host, ""));
}
-TEST(main, HandleCorrectPacket) {
- pkt rpkt;
+TEST(packetHandling, HandleCorrectPacket) {
+ struct pkt rpkt;
sockaddr_u host;
int rpktl;
l_fp now;
// We don't want our testing code to actually change the system clock.
- TEST_ASSERT_FALSE(ENABLED_OPT(STEP));
- TEST_ASSERT_FALSE(ENABLED_OPT(SLEW));
+//XXX: needs updating. TEST_ASSERT_FALSE(ENABLED_OPT(STEP));
+//XXX: needs updating TEST_ASSERT_FALSE(ENABLED_OPT(SLEW));
get_systime(&now);
HTONL_FP(&now, &rpkt.reftime);
@@ -264,4 +270,15 @@ TEST(main, HandleCorrectPacket) {
TEST_ASSERT_EQUAL(0, handle_pkt(rpktl, &rpkt, &host, ""));
}
-/* packetHandling.cpp */
+TEST_GROUP_RUNNER(packetHandling) {
+ RUN_TEST_CASE(packetHandling, GenerateUnauthenticatedPacket);
+ RUN_TEST_CASE(packetHandling, GenerateAuthenticatedPacket);
+ RUN_TEST_CASE(packetHandling, OffsetCalculationPositiveOffset);
+ RUN_TEST_CASE(packetHandling, OffsetCalculationNegativeOffset);
+ RUN_TEST_CASE(packetHandling, HandleUnusableServer);
+ RUN_TEST_CASE(packetHandling, HandleUnusablePacket);
+ RUN_TEST_CASE(packetHandling, HandleServerAuthenticationFailure);
+ RUN_TEST_CASE(packetHandling, HandleKodDemobilize);
+ RUN_TEST_CASE(packetHandling, HandleKodRate);
+ RUN_TEST_CASE(packetHandling, HandleCorrectPacket);
+}
=====================================
tests/wscript
=====================================
--- a/tests/wscript
+++ b/tests/wscript
@@ -2,9 +2,10 @@ def build(ctx):
srcnode = ctx.srcnode.abspath()
bldnode = ctx.bldnode.abspath()
+ # Unity source
unity_source = [
"unity/unity.c",
- "unity/unity_fixture.c"
+ "unity/unity_fixture.c",
]
ctx(
@@ -14,24 +15,56 @@ def build(ctx):
)
- test_source = [
- "ntpdig/fileHandlingTest.c",
- "ntpdig/keyFile.c",
- "ntpdig/crypto.c",
- "ntpdig/tests_main.c"
+ # Test main.
+ common_source = [
+ "common/tests_main.c"
]
+ ntpdig_source = [
+ "ntpdig/crypto.c",
+ "ntpdig/fileHandlingTest.c",
+ "ntpdig/keyFile.c",
+# "ntpdig/kodDatabase.c",
+# "ntpdig/kodFile.c",
+# "ntpdig/networking.c",
+ "ntpdig/packetHandling.c",
+ ] + common_source
+
+ # ntpdig/
ctx.ntp_test(
- features = "c cprogram bld_include src_include libisc_include",
- target = "ntpdig_crypto",
+ features = "c cprogram bld_include src_include libisc_include test",
+ target = "test_ntpdig",
+ defines = ["TEST_NTPDIG=1"],
includes = [
"%s/tests/unity/" % srcnode,
+ "%s/tests/common/" % srcnode,
"%s/ntpdig/" % srcnode
],
use = "unity ntpdig_obj ntp isc M",
- source = test_source,
- test_data = "%s/tests/ntpdig/data/" % srcnode
+ source = ntpdig_source,
+ test_data = "%s/tests/ntpdig/data/" % srcnode,
+ )
+
+
+"""
+ # libntp/
+ libntp_source = [
+ "libntp/ssl_init.c",
+ ]
+
+ ctx.ntp_test(
+ features = "c cprogram bld_include src_include libisc_include",
+ target = "test_libntp",
+ defines = ["TEST_LIBNTP_SSL"],
+ includes = [
+ "%s/tests/unity/" % srcnode,
+ "%s/tests/libntp/" % srcnode,
+ "%s/tests/ntpdig/" % srcnode,
+ "%s/tests/common/" % srcnode
+ ],
+ use = "unity ntp isc M test_common",
+ source = libntp_source,
)
-# ctx.env.TEST_BIN += [("%s/tests/%s" % (bldnode, tg.target), "%s/tests/ntpdig/data/" % srcnode)]
+"""
=====================================
wscript
=====================================
--- a/wscript
+++ b/wscript
@@ -3,6 +3,7 @@ from waflib import Utils
out="build"
from pylib.configure import cmd_configure
+from waflib.Tools import waf_unit_test
OPT_STORE = {} # Storage for options to pass into configure
@@ -31,6 +32,7 @@ def dist(ctx):
def options(ctx):
ctx.load("compiler_c")
ctx.load("msvc")
+ ctx.load('waf_unit_test')
def callback_flags(option, opt, value, parser):
OPT_STORE.setdefault(opt, []).append(value)
@@ -80,16 +82,38 @@ def configure(ctx):
ctx.load('waf', tooldir='pylib/')
+ ctx.load('waf_unit_test')
ctx.env.OPT_STORE = OPT_STORE
cmd_configure(ctx)
+
from waflib.Build import BuildContext
class check(BuildContext):
cmd = 'check'
+
+def test_print_log(ctx):
+ from waflib.Logs import pprint
+ for binary, retval, lines, error in ctx.utest_results:
+
+ pprint("YELLOW", "BINARY :", binary)
+ pprint("YELLOW", "RETURN VALUE:", retval)
+ print("")
+
+ if retval or error:
+ pprint("RED", "****** ERROR ******")
+
+ print error or lines
+
+ if (not retval) and (not error):
+ pprint("GREEN", "****** LOG ******", lines)
+
+ print
+
+
def build(ctx):
ctx.load('waf', tooldir='pylib/')
ctx.load('bison')
@@ -131,12 +155,14 @@ def build(ctx):
ctx.manpage(1, "ntptrace/ntptrace-man.txt")
+ # Force re-running of tests. Same as 'waf --alltests'
if ctx.cmd == "check":
- for bin, args in ctx.env.TEST_BIN:
+ ctx.options.all_tests = True
+
+ # Print log if -v is supplied
+ if ctx.options.verbose:
+ ctx.add_post_fun(test_print_log)
- ctx(
- rule = "%s -v %s" % (bin, args or " "),
- shell = True
- )
+ # Print a summary at the end
+ ctx.add_post_fun(waf_unit_test.summary)
-# end
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/compare/c5c460b5b4fe016149501e051dfd500c4e829d23...9fb1e0258ea61eb954f5096301e057a6ab49b66a
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ntpsec.org/pipermail/vc/attachments/20151120/9a964693/attachment.html>
More information about the vc
mailing list