X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_meter.c;h=bc76391fcde8f51adde6882d751addbc9d986de4;hb=47cb11c9bfd3f15ec32fbef97401173b53172c71;hp=3b14906f43b37d857d28c6b709f7636e02f1f523;hpb=e6541fdec8b2407e46569147be6887ca3ad4a704;p=dpdk.git diff --git a/app/test/test_meter.c b/app/test/test_meter.c index 3b14906f43..bc76391fcd 100644 --- a/app/test/test_meter.c +++ b/app/test/test_meter.c @@ -1,35 +1,34 @@ /*- * BSD LICENSE - * - * Copyright(c) 2010-2013 Intel Corporation. All rights reserved. + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions * are met: - * - * * Redistributions of source code must retain the above copyright + * + * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ #include @@ -38,12 +37,8 @@ #include #include -#include - #include "test.h" -#ifdef RTE_LIBRTE_METER - #include #include @@ -69,21 +64,21 @@ #define TM_TEST_TRTCM_CBS_DF 2048 #define TM_TEST_TRTCM_PBS_DF 4096 -static struct rte_meter_srtcm_params sparams = - {.cir = TM_TEST_SRTCM_CIR_DF, - .cbs = TM_TEST_SRTCM_CBS_DF, +static struct rte_meter_srtcm_params sparams = + {.cir = TM_TEST_SRTCM_CIR_DF, + .cbs = TM_TEST_SRTCM_CBS_DF, .ebs = TM_TEST_SRTCM_EBS_DF,}; -static struct rte_meter_trtcm_params tparams= - {.cir = TM_TEST_TRTCM_CIR_DF, - .pir = TM_TEST_TRTCM_PIR_DF, - .cbs = TM_TEST_TRTCM_CBS_DF, +static struct rte_meter_trtcm_params tparams= + {.cir = TM_TEST_TRTCM_CIR_DF, + .pir = TM_TEST_TRTCM_PIR_DF, + .cbs = TM_TEST_TRTCM_CBS_DF, .pbs = TM_TEST_TRTCM_PBS_DF,}; /** * functional test for rte_meter_srtcm_config */ -static inline int +static inline int tm_test_srtcm_config(void) { #define SRTCM_CFG_MSG "srtcm_config" @@ -115,16 +110,16 @@ tm_test_srtcm_config(void) sparams1 = sparams; sparams1.ebs = 0; if(rte_meter_srtcm_config(&sm, &sparams1) != 0) - melog(SRTCM_CFG_MSG); + melog(SRTCM_CFG_MSG); sparams1 = sparams; sparams1.cbs = 0; if(rte_meter_srtcm_config(&sm, &sparams1) != 0) - melog(SRTCM_CFG_MSG); + melog(SRTCM_CFG_MSG); /* usual parameter, should be successful */ if(rte_meter_srtcm_config(&sm, &sparams) != 0) - melog(SRTCM_CFG_MSG); + melog(SRTCM_CFG_MSG); return 0; @@ -133,7 +128,7 @@ tm_test_srtcm_config(void) /** * functional test for rte_meter_trtcm_config */ -static inline int +static inline int tm_test_trtcm_config(void) { struct rte_meter_trtcm tm; @@ -162,12 +157,12 @@ tm_test_trtcm_config(void) tparams1 = tparams; tparams1.pbs = 0; if(rte_meter_trtcm_config(&tm, &tparams1) == 0) - melog(TRTCM_CFG_MSG); + melog(TRTCM_CFG_MSG); tparams1 = tparams; tparams1.pir = 0; if(rte_meter_trtcm_config(&tm, &tparams1) == 0) - melog(TRTCM_CFG_MSG); + melog(TRTCM_CFG_MSG); /* pir should be greater or equal to cir */ tparams1 = tparams; @@ -177,7 +172,7 @@ tm_test_trtcm_config(void) /* usual parameter, should be successful */ if(rte_meter_trtcm_config(&tm, &tparams) != 0) - melog(TRTCM_CFG_MSG); + melog(TRTCM_CFG_MSG); return 0; } @@ -185,29 +180,29 @@ tm_test_trtcm_config(void) /** * functional test for rte_meter_srtcm_color_blind_check */ -static inline int +static inline int tm_test_srtcm_color_blind_check(void) { #define SRTCM_BLIND_CHECK_MSG "srtcm_blind_check" struct rte_meter_srtcm sm; uint64_t time; uint64_t hz = rte_get_tsc_hz(); - + /* Test green */ if(rte_meter_srtcm_config(&sm, &sparams) != 0) melog(SRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_srtcm_color_blind_check( - &sm, time, TM_TEST_SRTCM_CBS_DF - 1) + &sm, time, TM_TEST_SRTCM_CBS_DF - 1) != e_RTE_METER_GREEN) melog(SRTCM_BLIND_CHECK_MSG" GREEN"); - + /* Test yellow */ if(rte_meter_srtcm_config(&sm, &sparams) != 0) melog(SRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_srtcm_color_blind_check( - &sm, time, TM_TEST_SRTCM_CBS_DF + 1) + &sm, time, TM_TEST_SRTCM_CBS_DF + 1) != e_RTE_METER_YELLOW) melog(SRTCM_BLIND_CHECK_MSG" YELLOW"); @@ -223,10 +218,10 @@ tm_test_srtcm_color_blind_check(void) melog(SRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_srtcm_color_blind_check( - &sm, time, TM_TEST_SRTCM_EBS_DF + 1) + &sm, time, TM_TEST_SRTCM_EBS_DF + 1) != e_RTE_METER_RED) melog(SRTCM_BLIND_CHECK_MSG" RED"); - + return 0; } @@ -234,7 +229,7 @@ tm_test_srtcm_color_blind_check(void) /** * functional test for rte_meter_trtcm_color_blind_check */ -static inline int +static inline int tm_test_trtcm_color_blind_check(void) { #define TRTCM_BLIND_CHECK_MSG "trtcm_blind_check" @@ -242,22 +237,22 @@ tm_test_trtcm_color_blind_check(void) uint64_t time; struct rte_meter_trtcm tm; uint64_t hz = rte_get_tsc_hz(); - + /* Test green */ if(rte_meter_trtcm_config(&tm, &tparams) != 0) melog(TRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_trtcm_color_blind_check( - &tm, time, TM_TEST_TRTCM_CBS_DF - 1) + &tm, time, TM_TEST_TRTCM_CBS_DF - 1) != e_RTE_METER_GREEN) melog(TRTCM_BLIND_CHECK_MSG" GREEN"); - + /* Test yellow */ if(rte_meter_trtcm_config(&tm, &tparams) != 0) melog(TRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_trtcm_color_blind_check( - &tm, time, TM_TEST_TRTCM_CBS_DF + 1) + &tm, time, TM_TEST_TRTCM_CBS_DF + 1) != e_RTE_METER_YELLOW) melog(TRTCM_BLIND_CHECK_MSG" YELLOW"); @@ -265,7 +260,7 @@ tm_test_trtcm_color_blind_check(void) melog(TRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_trtcm_color_blind_check( - &tm, time, TM_TEST_TRTCM_PBS_DF - 1) + &tm, time, TM_TEST_TRTCM_PBS_DF - 1) != e_RTE_METER_YELLOW) melog(TRTCM_BLIND_CHECK_MSG" YELLOW"); @@ -274,7 +269,7 @@ tm_test_trtcm_color_blind_check(void) melog(TRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_trtcm_color_blind_check( - &tm, time, TM_TEST_TRTCM_PBS_DF + 1) + &tm, time, TM_TEST_TRTCM_PBS_DF + 1) != e_RTE_METER_RED) melog(TRTCM_BLIND_CHECK_MSG" RED"); @@ -285,13 +280,13 @@ tm_test_trtcm_color_blind_check(void) /** * @in[4] : the flags packets carries. * @in[4] : the flags function expect to return. - * It will do blind check at the time of 1 second from beginning. - * At the time, it will use packets length of cbs -1, cbs + 1, + * It will do blind check at the time of 1 second from beginning. + * At the time, it will use packets length of cbs -1, cbs + 1, * ebs -1 and ebs +1 with flag in[0], in[1], in[2] and in[3] to do * aware check, expect flag out[0], out[1], out[2] and out[3] */ -static inline int +static inline int tm_test_srtcm_aware_check (enum rte_meter_color in[4], enum rte_meter_color out[4]) { @@ -299,14 +294,14 @@ tm_test_srtcm_aware_check struct rte_meter_srtcm sm; uint64_t time; uint64_t hz = rte_get_tsc_hz(); - + if(rte_meter_srtcm_config(&sm, &sparams) != 0) melog(SRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_srtcm_color_aware_check( &sm, time, TM_TEST_SRTCM_CBS_DF - 1, in[0]) != out[0]) melog(SRTCM_AWARE_CHECK_MSG" %u:%u", in[0], out[0]); - + if(rte_meter_srtcm_config(&sm, &sparams) != 0) melog(SRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; @@ -327,7 +322,7 @@ tm_test_srtcm_aware_check if(rte_meter_srtcm_color_aware_check( &sm, time, TM_TEST_SRTCM_EBS_DF + 1, in[3]) != out[3]) melog(SRTCM_AWARE_CHECK_MSG" %u:%u", in[3], out[3]); - + return 0; } @@ -335,14 +330,14 @@ tm_test_srtcm_aware_check /** * functional test for rte_meter_srtcm_color_aware_check */ -static inline int +static inline int tm_test_srtcm_color_aware_check(void) { enum rte_meter_color in[4], out[4]; /** - * test 4 points that will produce green, yellow, yellow, red flag - * if using blind check + * test 4 points that will produce green, yellow, yellow, red flag + * if using blind check */ /* previouly have a green, test points should keep unchanged */ @@ -355,7 +350,7 @@ tm_test_srtcm_color_aware_check(void) return -1; /** - * previously have a yellow, green & yellow = yellow + * previously have a yellow, green & yellow = yellow * yellow & red = red */ in[0] = in[1] = in[2] = in[3] = e_RTE_METER_YELLOW; @@ -365,9 +360,9 @@ tm_test_srtcm_color_aware_check(void) out[3] = e_RTE_METER_RED; if(tm_test_srtcm_aware_check(in, out) != 0) return -1; - + /** - * previously have a red, red & green = red + * previously have a red, red & green = red * red & yellow = red */ in[0] = in[1] = in[2] = in[3] = e_RTE_METER_RED; @@ -384,12 +379,12 @@ tm_test_srtcm_color_aware_check(void) /** * @in[4] : the flags packets carries. * @in[4] : the flags function expect to return. - * It will do blind check at the time of 1 second from beginning. - * At the time, it will use packets length of cbs -1, cbs + 1, + * It will do blind check at the time of 1 second from beginning. + * At the time, it will use packets length of cbs -1, cbs + 1, * ebs -1 and ebs +1 with flag in[0], in[1], in[2] and in[3] to do * aware check, expect flag out[0], out[1], out[2] and out[3] */ -static inline int +static inline int tm_test_trtcm_aware_check (enum rte_meter_color in[4], enum rte_meter_color out[4]) { @@ -397,14 +392,14 @@ tm_test_trtcm_aware_check struct rte_meter_trtcm tm; uint64_t time; uint64_t hz = rte_get_tsc_hz(); - + if(rte_meter_trtcm_config(&tm, &tparams) != 0) melog(TRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; if(rte_meter_trtcm_color_aware_check( &tm, time, TM_TEST_TRTCM_CBS_DF - 1, in[0]) != out[0]) melog(TRTCM_AWARE_CHECK_MSG" %u:%u", in[0], out[0]); - + if(rte_meter_trtcm_config(&tm, &tparams) != 0) melog(TRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; @@ -425,7 +420,7 @@ tm_test_trtcm_aware_check if(rte_meter_trtcm_color_aware_check( &tm, time, TM_TEST_TRTCM_PBS_DF + 1, in[3]) != out[3]) melog(TRTCM_AWARE_CHECK_MSG" %u:%u", in[3], out[3]); - + return 0; } @@ -434,13 +429,13 @@ tm_test_trtcm_aware_check * functional test for rte_meter_trtcm_color_aware_check */ -static inline int +static inline int tm_test_trtcm_color_aware_check(void) { enum rte_meter_color in[4], out[4]; /** - * test 4 points that will produce green, yellow, yellow, red flag - * if using blind check + * test 4 points that will produce green, yellow, yellow, red flag + * if using blind check */ /* previouly have a green, test points should keep unchanged */ @@ -451,7 +446,7 @@ tm_test_trtcm_color_aware_check(void) out[3] = e_RTE_METER_RED; if(tm_test_trtcm_aware_check(in, out) != 0) return -1; - + in[0] = in[1] = in[2] = in[3] = e_RTE_METER_YELLOW; out[0] = e_RTE_METER_YELLOW; out[1] = e_RTE_METER_YELLOW; @@ -459,7 +454,7 @@ tm_test_trtcm_color_aware_check(void) out[3] = e_RTE_METER_RED; if(tm_test_trtcm_aware_check(in, out) != 0) return -1; - + in[0] = in[1] = in[2] = in[3] = e_RTE_METER_RED; out[0] = e_RTE_METER_RED; out[1] = e_RTE_METER_RED; @@ -474,14 +469,14 @@ tm_test_trtcm_color_aware_check(void) /** * test main entrance for library meter */ -int +static int test_meter(void) { if(tm_test_srtcm_config() != 0 ) return -1; if(tm_test_trtcm_config() != 0 ) - return -1; + return -1; if(tm_test_srtcm_color_blind_check() != 0) return -1; @@ -491,20 +486,16 @@ test_meter(void) if(tm_test_srtcm_color_aware_check()!= 0) return -1; - + if(tm_test_trtcm_color_aware_check()!= 0) return -1; - + return 0; } -#else /* RTE_LIBRTE_METER */ - -int -test_meter(void) -{ - printf("The meter library is not included in this build\n"); - return 0; -} -#endif /* RTE_LIBRTE_METER */ +static struct test_command meter_cmd = { + .command = "meter_autotest", + .callback = test_meter, +}; +REGISTER_TEST_COMMAND(meter_cmd);