File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / charon-tkm / tests / id_manager_tests.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 09:46:45 2020 UTC (4 years, 3 months ago) by misho
Branches: strongswan, MAIN
CVS tags: v5_9_2p0, v5_8_4p7, HEAD
Strongswan

    1: /*
    2:  * Copyright (C) 2012 Reto Buerki
    3:  * Copyright (C) 2012 Adrian-Ken Rueegsegger
    4:  * HSR Hochschule fuer Technik Rapperswil
    5:  *
    6:  * This program is free software; you can redistribute it and/or modify it
    7:  * under the terms of the GNU General Public License as published by the
    8:  * Free Software Foundation; either version 2 of the License, or (at your
    9:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
   10:  *
   11:  * This program is distributed in the hope that it will be useful, but
   12:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   13:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14:  * for more details.
   15:  */
   16: 
   17: #include <tests/test_suite.h>
   18: 
   19: #include "tkm_id_manager.h"
   20: 
   21: static const tkm_limits_t limits = {125, 100, 55, 30, 200, 42};
   22: 
   23: START_TEST(test_id_mgr_creation)
   24: {
   25: 	tkm_id_manager_t *idmgr = NULL;
   26: 
   27: 	idmgr = tkm_id_manager_create(limits);
   28: 	fail_if(idmgr == NULL, "Error creating tkm id manager");
   29: 
   30: 	idmgr->destroy(idmgr);
   31: }
   32: END_TEST
   33: 
   34: START_TEST(test_acquire_id)
   35: {
   36: 	int i, id = 0;
   37: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
   38: 
   39: 	for (i = 0; i < TKM_CTX_MAX; i++)
   40: 	{
   41: 		id = idmgr->acquire_id(idmgr, i);
   42: 		fail_unless(id > 0, "Error acquiring id of context kind %d", i);
   43: 
   44: 		/* Reset test variable */
   45: 		id = 0;
   46: 	}
   47: 
   48: 	idmgr->destroy(idmgr);
   49: }
   50: END_TEST
   51: 
   52: START_TEST(test_acquire_id_invalid_kind)
   53: {
   54: 	int id = 0;
   55: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
   56: 
   57: 	id = idmgr->acquire_id(idmgr, TKM_CTX_MAX);
   58: 	fail_unless(id == 0, "Acquired id for invalid context kind %d", TKM_CTX_MAX);
   59: 
   60: 	/* Reset test variable */
   61: 	id = 0;
   62: 
   63: 	id = idmgr->acquire_id(idmgr, -1);
   64: 	fail_unless(id == 0, "Acquired id for invalid context kind %d", -1);
   65: 
   66: 	idmgr->destroy(idmgr);
   67: }
   68: END_TEST
   69: 
   70: START_TEST(test_acquire_id_same)
   71: {
   72: 	int id1 = 0, id2 = 0;
   73: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
   74: 
   75: 	id1 = idmgr->acquire_id(idmgr, TKM_CTX_NONCE);
   76: 	fail_unless(id1 > 0, "Unable to acquire first id");
   77: 
   78: 	/* Acquire another id, must be different than first */
   79: 	id2 = idmgr->acquire_id(idmgr, TKM_CTX_NONCE);
   80: 	fail_unless(id2 > 0, "Unable to acquire second id");
   81: 	fail_unless(id1 != id2, "Same id received twice");
   82: 
   83: 	idmgr->destroy(idmgr);
   84: }
   85: END_TEST
   86: 
   87: START_TEST(test_acquire_ref)
   88: {
   89: 	int i, id = 0;
   90: 	bool acquired = false;
   91: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
   92: 
   93: 	for (i = 0; i < TKM_CTX_MAX; i++)
   94: 	{
   95: 		id = idmgr->acquire_id(idmgr, i);
   96: 		acquired = idmgr->acquire_ref(idmgr, i, id);
   97: 		fail_unless(acquired, "Error acquiring reference context kind %d", i);
   98: 
   99: 		/* Reset test variable */
  100: 		acquired = false;
  101: 	}
  102: 
  103: 	idmgr->destroy(idmgr);
  104: }
  105: END_TEST
  106: 
  107: START_TEST(test_acquire_ref_invalid_kind)
  108: {
  109: 	bool acquired;
  110: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
  111: 
  112: 	acquired = idmgr->acquire_ref(idmgr, TKM_CTX_MAX, 1);
  113: 	fail_if(acquired, "Acquired reference for invalid context kind %d", TKM_CTX_MAX);
  114: 
  115: 	/* Reset test variable */
  116: 	acquired = 0;
  117: 
  118: 	acquired = idmgr->acquire_ref(idmgr, -1, 1);
  119: 	fail_if(acquired, "Acquired reference for invalid context kind %d", -1);
  120: 
  121: 	idmgr->destroy(idmgr);
  122: }
  123: END_TEST
  124: 
  125: START_TEST(test_acquire_ref_invalid_id)
  126: {
  127: 	int i;
  128: 	bool acquired;
  129: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
  130: 
  131: 	for (i = 0; i < TKM_CTX_MAX; i++)
  132: 	{
  133: 		acquired = idmgr->acquire_ref(idmgr, i, -1);
  134: 		fail_if(acquired,
  135: 				"Acquired reference for negative id of context kind %d", i);
  136: 
  137: 		/* Reset test variable */
  138: 		acquired = false;
  139: 
  140: 		acquired = idmgr->acquire_ref(idmgr, i, limits[i] + 1);
  141: 		fail_if(acquired,
  142: 				"Acquired reference exceeding limit of context kind %d", i);
  143: 
  144: 		/* Reset test variable */
  145: 		acquired = false;
  146: 	}
  147: 
  148: 	idmgr->destroy(idmgr);
  149: }
  150: END_TEST
  151: 
  152: START_TEST(test_release_id)
  153: {
  154: 	int i, count, id = 0;
  155: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
  156: 
  157: 	for (i = 0; i < TKM_CTX_MAX; i++)
  158: 	{
  159: 		id = idmgr->acquire_id(idmgr, i);
  160: 		count = idmgr->release_id(idmgr, i, id);
  161: 
  162: 		fail_unless(count == 0, "Error releasing id of context kind %d", i);
  163: 
  164: 		/* Reset count variable */
  165: 		count = 0;
  166: 	}
  167: 
  168: 	idmgr->destroy(idmgr);
  169: }
  170: END_TEST
  171: 
  172: START_TEST(test_release_id_invalid_kind)
  173: {
  174: 	int count = 0;
  175: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
  176: 
  177: 	count = idmgr->release_id(idmgr, TKM_CTX_MAX, 1);
  178: 	fail_if(count >= 0, "Released id for invalid context kind %d", TKM_CTX_MAX);
  179: 
  180: 	/* Reset test variable */
  181: 	count = 0;
  182: 
  183: 	count = idmgr->release_id(idmgr, -1, 1);
  184: 	fail_if(count >= 0, "Released id for invalid context kind %d", -1);
  185: 
  186: 	idmgr->destroy(idmgr);
  187: }
  188: END_TEST
  189: 
  190: START_TEST(test_release_id_nonexistent)
  191: {
  192: 	int count = 0;
  193: 	tkm_id_manager_t *idmgr = tkm_id_manager_create(limits);
  194: 
  195: 	count = idmgr->release_id(idmgr, TKM_CTX_NONCE, 1);
  196: 	fail_unless(count == 0, "Release of nonexistent id failed");
  197: 
  198: 	idmgr->destroy(idmgr);
  199: }
  200: END_TEST
  201: 
  202: Suite *make_id_manager_tests()
  203: {
  204: 	Suite *s;
  205: 	TCase *tc;
  206: 
  207: 	s = suite_create("context id manager");
  208: 
  209: 	tc = tcase_create("creation");
  210: 	tcase_add_test(tc, test_id_mgr_creation);
  211: 	suite_add_tcase(s, tc);
  212: 
  213: 	tc = tcase_create("acquire");
  214: 	tcase_add_test(tc, test_acquire_id);
  215: 	tcase_add_test(tc, test_acquire_id_invalid_kind);
  216: 	tcase_add_test(tc, test_acquire_id_same);
  217: 	tcase_add_test(tc, test_acquire_ref);
  218: 	tcase_add_test(tc, test_acquire_ref_invalid_kind);
  219: 	tcase_add_test(tc, test_acquire_ref_invalid_id);
  220: 	suite_add_tcase(s, tc);
  221: 
  222: 	tc = tcase_create("release");
  223: 	tcase_add_test(tc, test_release_id);
  224: 	tcase_add_test(tc, test_release_id_invalid_kind);
  225: 	tcase_add_test(tc, test_release_id_nonexistent);
  226: 	suite_add_tcase(s, tc);
  227: 
  228: 	return s;
  229: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>