Exemplo n.º 1
0
// ----------------------------------------------------------------------
// add dynamic leap second (like from peer/clock)
TEST(leapsec, addDynamic) {
	bool           rc;
	int            idx;

	static const uint32_t insns[] = {
		2982009600u,	//	29	# 1 Jul 1994
		3029443200u,	//	30	# 1 Jan 1996
		3076704000u,	//	31	# 1 Jul 1997
		3124137600u,	//	32	# 1 Jan 1999
		3345062400u,	//	33	# 1 Jan 2006
		3439756800u,	//	34	# 1 Jan 2009
		3550089600u,	//	35	# 1 Jul 2012
		0 // sentinel
	};

	rc = setup_load_table(leap2, 0);
	TEST_ASSERT_TRUE(rc);

	for (idx=1; insns[idx]; ++idx) {
	    rc = leapsec_add_dyn(true, insns[idx] - 20*SECSPERDAY - 100, NULL);
		TEST_ASSERT_TRUE(rc);
	}
	// try to slip in a previous entry
	rc = leapsec_add_dyn(true, insns[0] - 20*SECSPERDAY - 100, NULL);
	TEST_ASSERT_FALSE(rc);
	//leapsec_dump(pt, (leapsec_dumper)fprintf, stdout);
}
Exemplo n.º 2
0
// ----------------------------------------------------------------------
// add dynamic leap second (like from peer/clock)
void test_addDynamic(void) {
	int            rc;
	leap_result_t  qr;

	static const uint32_t insns[] = {
		2982009600u,	//	29	# 1 Jul 1994
		3029443200u,	//	30	# 1 Jan 1996
		3076704000u,	//	31	# 1 Jul 1997
		3124137600u,	//	32	# 1 Jan 1999
		3345062400u,	//	33	# 1 Jan 2006
		3439756800u,	//	34	# 1 Jan 2009
		3550089600u,	//	35	# 1 Jul 2012
		0 // sentinel
	};

	rc = setup_load_table(leap2, FALSE);
	TEST_ASSERT_EQUAL(1, rc);

	leap_table_t * pt = leapsec_get_table(0);
	int 		idx;

	for (idx=1; insns[idx]; ++idx) {
		rc = leapsec_add_dyn(TRUE, insns[idx] - 20*SECSPERDAY - 100, NULL);
		TEST_ASSERT_EQUAL(TRUE, rc);
	}
	// try to slip in a previous entry
	rc = leapsec_add_dyn(TRUE, insns[0] - 20*SECSPERDAY - 100, NULL);
	TEST_ASSERT_EQUAL(FALSE, rc);
	//leapsec_dump(pt, (leapsec_dumper)fprintf, stdout);
}
Exemplo n.º 3
0
// ----------------------------------------------------------------------
// test adjustment with a dynamic entry already there in dead zone
void test_taiTableDynamicDeadZone(void) {
	int rc;

	rc = leapsec_add_dyn(TRUE, lsec2015-20*SECSPERDAY, NULL);
	TEST_ASSERT_EQUAL(TRUE, rc);

	rc = leapsec_autokey_tai(35, lsec2015-5, NULL);	
	TEST_ASSERT_EQUAL(FALSE, rc);

	rc = leapsec_autokey_tai(35, lsec2015+5, NULL);
	TEST_ASSERT_EQUAL(FALSE, rc);
}
Exemplo n.º 4
0
// ----------------------------------------------------------------------
// test adjustment with a dynamic entry already there
void test_taiTableDynamic(void) {
	int        rc;
	leap_era_t era;

	rc = leapsec_add_dyn(TRUE, lsec2015-20*SECSPERDAY, NULL);
	TEST_ASSERT_EQUAL(TRUE, rc);

	leapsec_query_era(&era, lsec2015-10, NULL);
	TEST_ASSERT_EQUAL(0, era.taiof);
	leapsec_query_era(&era, lsec2015+10, NULL);
	TEST_ASSERT_EQUAL(1, era.taiof);

	rc = leapsec_autokey_tai(35, lsec2015-19*86400, NULL);	
	TEST_ASSERT_EQUAL(TRUE, rc);

	rc = leapsec_autokey_tai(35, lsec2015-19*86400, NULL);
	TEST_ASSERT_EQUAL(FALSE, rc);

	leapsec_query_era(&era, lsec2015-10, NULL);
	TEST_ASSERT_EQUAL(35, era.taiof);
	leapsec_query_era(&era, lsec2015+10, NULL);
	TEST_ASSERT_EQUAL(36, era.taiof);
}