X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_meter.c;h=f6fe6494ab63096b9b50c30b6b4477c32d090153;hb=23bdcedcd8caa0d268b615df3bdb08411f97856e;hp=688978dcc3d612620312d0af2638b6138a132dfa;hpb=1c1d4d7a923d4804f1926fc5264f9ecdd8977b04;p=dpdk.git diff --git a/app/test/test_meter.c b/app/test/test_meter.c index 688978dcc3..f6fe6494ab 100644 --- a/app/test/test_meter.c +++ b/app/test/test_meter.c @@ -1,34 +1,5 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2013 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 - * are met: - * - * * 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 - * distribution. - * * 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 - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2014 Intel Corporation */ #include @@ -37,12 +8,8 @@ #include #include -#include - #include "test.h" -#ifdef RTE_LIBRTE_METER - #include #include @@ -65,65 +32,73 @@ #define TM_TEST_TRTCM_CIR_DF 46000000 #define TM_TEST_TRTCM_PIR_DF 69000000 +#define TM_TEST_TRTCM_EIR_DF 69000000 #define TM_TEST_TRTCM_CBS_DF 2048 #define TM_TEST_TRTCM_PBS_DF 4096 +#define TM_TEST_TRTCM_EBS_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,}; +static struct rte_meter_trtcm_rfc4115_params rfc4115params = + {.cir = TM_TEST_TRTCM_CIR_DF, + .eir = TM_TEST_TRTCM_EIR_DF, + .cbs = TM_TEST_TRTCM_CBS_DF, + .ebs = TM_TEST_TRTCM_EBS_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" - struct rte_meter_srtcm sm; + struct rte_meter_srtcm_profile sp; struct rte_meter_srtcm_params sparams1; /* invalid parameter test */ - if(rte_meter_srtcm_config(NULL, NULL) == 0) + if (rte_meter_srtcm_profile_config(NULL, NULL) == 0) melog(SRTCM_CFG_MSG); - if(rte_meter_srtcm_config(&sm, NULL) == 0) + if (rte_meter_srtcm_profile_config(&sp, NULL) == 0) melog(SRTCM_CFG_MSG); - if(rte_meter_srtcm_config(NULL, &sparams) == 0) + if (rte_meter_srtcm_profile_config(NULL, &sparams) == 0) melog(SRTCM_CFG_MSG); /* cbs and ebs can't both be zero */ sparams1 = sparams; sparams1.cbs = 0; sparams1.ebs = 0; - if(rte_meter_srtcm_config(&sm, &sparams1) == 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams1) == 0) melog(SRTCM_CFG_MSG); /* cir should never be 0 */ sparams1 = sparams; sparams1.cir = 0; - if(rte_meter_srtcm_config(&sm, &sparams1) == 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams1) == 0) melog(SRTCM_CFG_MSG); /* one of ebs and cbs can be zero, should be successful */ sparams1 = sparams; sparams1.ebs = 0; - if(rte_meter_srtcm_config(&sm, &sparams1) != 0) - melog(SRTCM_CFG_MSG); + if (rte_meter_srtcm_profile_config(&sp, &sparams1) != 0) + melog(SRTCM_CFG_MSG); sparams1 = sparams; sparams1.cbs = 0; - if(rte_meter_srtcm_config(&sm, &sparams1) != 0) - melog(SRTCM_CFG_MSG); + if (rte_meter_srtcm_profile_config(&sp, &sparams1) != 0) + melog(SRTCM_CFG_MSG); /* usual parameter, should be successful */ - if(rte_meter_srtcm_config(&sm, &sparams) != 0) - melog(SRTCM_CFG_MSG); + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_CFG_MSG); return 0; @@ -132,51 +107,90 @@ 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; + struct rte_meter_trtcm_profile tp; struct rte_meter_trtcm_params tparams1; #define TRTCM_CFG_MSG "trtcm_config" /* invalid parameter test */ - if(rte_meter_trtcm_config(NULL, NULL) == 0) + if (rte_meter_trtcm_profile_config(NULL, NULL) == 0) melog(TRTCM_CFG_MSG); - if(rte_meter_trtcm_config(&tm, NULL) == 0) + if (rte_meter_trtcm_profile_config(&tp, NULL) == 0) melog(TRTCM_CFG_MSG); - if(rte_meter_trtcm_config(NULL, &tparams) == 0) + if (rte_meter_trtcm_profile_config(NULL, &tparams) == 0) melog(TRTCM_CFG_MSG); /* cir, cbs, pir and pbs never be zero */ tparams1 = tparams; tparams1.cir = 0; - if(rte_meter_trtcm_config(&tm, &tparams1) == 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams1) == 0) melog(TRTCM_CFG_MSG); tparams1 = tparams; tparams1.cbs = 0; - if(rte_meter_trtcm_config(&tm, &tparams1) == 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams1) == 0) melog(TRTCM_CFG_MSG); tparams1 = tparams; tparams1.pbs = 0; - if(rte_meter_trtcm_config(&tm, &tparams1) == 0) - melog(TRTCM_CFG_MSG); + if (rte_meter_trtcm_profile_config(&tp, &tparams1) == 0) + melog(TRTCM_CFG_MSG); tparams1 = tparams; tparams1.pir = 0; - if(rte_meter_trtcm_config(&tm, &tparams1) == 0) - melog(TRTCM_CFG_MSG); + if (rte_meter_trtcm_profile_config(&tp, &tparams1) == 0) + melog(TRTCM_CFG_MSG); /* pir should be greater or equal to cir */ tparams1 = tparams; tparams1.pir = tparams1.cir - 1; - if(rte_meter_trtcm_config(&tm, &tparams1) == 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams1) == 0) melog(TRTCM_CFG_MSG" pir < cir test"); /* usual parameter, should be successful */ - if(rte_meter_trtcm_config(&tm, &tparams) != 0) - melog(TRTCM_CFG_MSG); + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_CFG_MSG); + + return 0; +} + +/** + * functional test for rte_meter_trtcm_rfc4115_config + */ +static inline int +tm_test_trtcm_rfc4115_config(void) +{ + struct rte_meter_trtcm_rfc4115_profile tp; + struct rte_meter_trtcm_rfc4115_params rfc4115params1; +#define TRTCM_RFC4115_CFG_MSG "trtcm_rfc4115_config" + + /* invalid parameter test */ + if (rte_meter_trtcm_rfc4115_profile_config(NULL, NULL) == 0) + melog(TRTCM_RFC4115_CFG_MSG); + if (rte_meter_trtcm_rfc4115_profile_config(&tp, NULL) == 0) + melog(TRTCM_RFC4115_CFG_MSG); + if (rte_meter_trtcm_rfc4115_profile_config(NULL, &rfc4115params) == 0) + melog(TRTCM_RFC4115_CFG_MSG); + + /* + * cbs and pbs should be none-zero if cir and eir are none-zero + * respectively + */ + rfc4115params1 = rfc4115params; + rfc4115params1.cbs = 0; + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params1) == 0) + melog(TRTCM_RFC4115_CFG_MSG); + + rfc4115params1 = rfc4115params; + rfc4115params1.ebs = 0; + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params1) == 0) + melog(TRTCM_RFC4115_CFG_MSG); + + /* usual parameter, should be successful */ + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_CFG_MSG); return 0; } @@ -184,48 +198,57 @@ 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_profile sp; 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) + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_BLIND_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 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) - != e_RTE_METER_GREEN) + if (rte_meter_srtcm_color_blind_check( + &sm, &sp, time, TM_TEST_SRTCM_CBS_DF - 1) + != RTE_COLOR_GREEN) melog(SRTCM_BLIND_CHECK_MSG" GREEN"); - + /* Test yellow */ - if(rte_meter_srtcm_config(&sm, &sparams) != 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_BLIND_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 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) - != e_RTE_METER_YELLOW) + if (rte_meter_srtcm_color_blind_check( + &sm, &sp, time, TM_TEST_SRTCM_CBS_DF + 1) + != RTE_COLOR_YELLOW) melog(SRTCM_BLIND_CHECK_MSG" YELLOW"); - if(rte_meter_srtcm_config(&sm, &sparams) != 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_BLIND_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 0) melog(SRTCM_BLIND_CHECK_MSG); time = rte_get_tsc_cycles() + hz; - if(rte_meter_srtcm_color_blind_check( - &sm, time, (uint32_t)sm.ebs - 1) != e_RTE_METER_YELLOW) + if (rte_meter_srtcm_color_blind_check( + &sm, &sp, time, (uint32_t)sp.ebs - 1) != RTE_COLOR_YELLOW) melog(SRTCM_BLIND_CHECK_MSG" YELLOW"); /* Test red */ - if(rte_meter_srtcm_config(&sm, &sparams) != 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_BLIND_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 0) 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) - != e_RTE_METER_RED) + if (rte_meter_srtcm_color_blind_check( + &sm, &sp, time, TM_TEST_SRTCM_EBS_DF + 1) + != RTE_COLOR_RED) melog(SRTCM_BLIND_CHECK_MSG" RED"); - + return 0; } @@ -233,100 +256,177 @@ 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" uint64_t time; + struct rte_meter_trtcm_profile tp; struct rte_meter_trtcm tm; uint64_t hz = rte_get_tsc_hz(); - + /* Test green */ - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_BLIND_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 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) - != e_RTE_METER_GREEN) + if (rte_meter_trtcm_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF - 1) + != RTE_COLOR_GREEN) melog(TRTCM_BLIND_CHECK_MSG" GREEN"); - + /* Test yellow */ - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_BLIND_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 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) - != e_RTE_METER_YELLOW) + if (rte_meter_trtcm_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF + 1) + != RTE_COLOR_YELLOW) melog(TRTCM_BLIND_CHECK_MSG" YELLOW"); - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_BLIND_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 0) 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) - != e_RTE_METER_YELLOW) + if (rte_meter_trtcm_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_PBS_DF - 1) + != RTE_COLOR_YELLOW) melog(TRTCM_BLIND_CHECK_MSG" YELLOW"); /* Test red */ - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_BLIND_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 0) 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) - != e_RTE_METER_RED) + if (rte_meter_trtcm_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_PBS_DF + 1) + != RTE_COLOR_RED) melog(TRTCM_BLIND_CHECK_MSG" RED"); return 0; } +/** + * functional test for rte_meter_trtcm_rfc4115_color_blind_check + */ +static inline int +tm_test_trtcm_rfc4115_color_blind_check(void) +{ +#define TRTCM_RFC4115_BLIND_CHECK_MSG "trtcm_rfc4115_blind_check" + + uint64_t time; + struct rte_meter_trtcm_rfc4115_profile tp; + struct rte_meter_trtcm_rfc4115 tm; + uint64_t hz = rte_get_tsc_hz(); + + /* Test green */ + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF - 1) + != RTE_COLOR_GREEN) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG" GREEN"); + + /* Test yellow */ + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF + 1) + != RTE_COLOR_YELLOW) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG" YELLOW"); + + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_EBS_DF - 1) + != RTE_COLOR_YELLOW) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG" YELLOW"); + + /* Test red */ + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_blind_check( + &tm, &tp, time, TM_TEST_TRTCM_EBS_DF + 1) + != RTE_COLOR_RED) + melog(TRTCM_RFC4115_BLIND_CHECK_MSG" RED"); + + return 0; +} + /** * @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]) +(enum rte_color in[4], enum rte_color out[4]) { #define SRTCM_AWARE_CHECK_MSG "srtcm_aware_check" + struct rte_meter_srtcm_profile sp; struct rte_meter_srtcm sm; uint64_t time; uint64_t hz = rte_get_tsc_hz(); - - if(rte_meter_srtcm_config(&sm, &sparams) != 0) + + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_AWARE_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 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]) + if (rte_meter_srtcm_color_aware_check( + &sm, &sp, 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) + + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_AWARE_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 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[1]) != out[1]) + if (rte_meter_srtcm_color_aware_check( + &sm, &sp, time, TM_TEST_SRTCM_CBS_DF + 1, in[1]) != out[1]) melog(SRTCM_AWARE_CHECK_MSG" %u:%u", in[1], out[1]); - if(rte_meter_srtcm_config(&sm, &sparams) != 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_AWARE_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 0) melog(SRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; - if(rte_meter_srtcm_color_aware_check( - &sm, time, TM_TEST_SRTCM_EBS_DF - 1, in[2]) != out[2]) + if (rte_meter_srtcm_color_aware_check( + &sm, &sp, time, TM_TEST_SRTCM_EBS_DF - 1, in[2]) != out[2]) melog(SRTCM_AWARE_CHECK_MSG" %u:%u", in[2], out[2]); - if(rte_meter_srtcm_config(&sm, &sparams) != 0) + if (rte_meter_srtcm_profile_config(&sp, &sparams) != 0) + melog(SRTCM_AWARE_CHECK_MSG); + if (rte_meter_srtcm_config(&sm, &sp) != 0) melog(SRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; - if(rte_meter_srtcm_color_aware_check( - &sm, time, TM_TEST_SRTCM_EBS_DF + 1, in[3]) != out[3]) + if (rte_meter_srtcm_color_aware_check( + &sm, &sp, time, TM_TEST_SRTCM_EBS_DF + 1, in[3]) != out[3]) melog(SRTCM_AWARE_CHECK_MSG" %u:%u", in[3], out[3]); - + return 0; } @@ -334,47 +434,47 @@ 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]; + enum rte_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 */ - in[0] = in[1] = in[2] = in[3] = e_RTE_METER_GREEN; - out[0] = e_RTE_METER_GREEN; - out[1] = e_RTE_METER_YELLOW; - out[2] = e_RTE_METER_YELLOW; - out[3] = e_RTE_METER_RED; - if(tm_test_srtcm_aware_check(in, out) != 0) + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_GREEN; + out[0] = RTE_COLOR_GREEN; + out[1] = RTE_COLOR_YELLOW; + out[2] = RTE_COLOR_YELLOW; + out[3] = RTE_COLOR_RED; + if (tm_test_srtcm_aware_check(in, out) != 0) 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; - out[0] = e_RTE_METER_YELLOW; - out[1] = e_RTE_METER_YELLOW; - out[2] = e_RTE_METER_YELLOW; - out[3] = e_RTE_METER_RED; - if(tm_test_srtcm_aware_check(in, out) != 0) + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_YELLOW; + out[0] = RTE_COLOR_YELLOW; + out[1] = RTE_COLOR_YELLOW; + out[2] = RTE_COLOR_YELLOW; + out[3] = RTE_COLOR_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; - out[0] = e_RTE_METER_RED; - out[1] = e_RTE_METER_RED; - out[2] = e_RTE_METER_RED; - out[3] = e_RTE_METER_RED; - if(tm_test_srtcm_aware_check(in, out) != 0) + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_RED; + out[0] = RTE_COLOR_RED; + out[1] = RTE_COLOR_RED; + out[2] = RTE_COLOR_RED; + out[3] = RTE_COLOR_RED; + if (tm_test_srtcm_aware_check(in, out) != 0) return -1; return 0; @@ -383,48 +483,57 @@ 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]) +(enum rte_color in[4], enum rte_color out[4]) { #define TRTCM_AWARE_CHECK_MSG "trtcm_aware_check" + struct rte_meter_trtcm_profile tp; struct rte_meter_trtcm tm; uint64_t time; uint64_t hz = rte_get_tsc_hz(); - - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_AWARE_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 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]) + if (rte_meter_trtcm_color_aware_check( + &tm, &tp, 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) + + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_AWARE_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 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[1]) != out[1]) + if (rte_meter_trtcm_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF + 1, in[1]) != out[1]) melog(TRTCM_AWARE_CHECK_MSG" %u:%u", in[1], out[1]); - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_AWARE_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 0) melog(TRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; - if(rte_meter_trtcm_color_aware_check( - &tm, time, TM_TEST_TRTCM_PBS_DF - 1, in[2]) != out[2]) + if (rte_meter_trtcm_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_PBS_DF - 1, in[2]) != out[2]) melog(TRTCM_AWARE_CHECK_MSG" %u:%u", in[2], out[2]); - if(rte_meter_trtcm_config(&tm, &tparams) != 0) + if (rte_meter_trtcm_profile_config(&tp, &tparams) != 0) + melog(TRTCM_AWARE_CHECK_MSG); + if (rte_meter_trtcm_config(&tm, &tp) != 0) melog(TRTCM_AWARE_CHECK_MSG); time = rte_get_tsc_cycles() + hz; - if(rte_meter_trtcm_color_aware_check( - &tm, time, TM_TEST_TRTCM_PBS_DF + 1, in[3]) != out[3]) + if (rte_meter_trtcm_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_PBS_DF + 1, in[3]) != out[3]) melog(TRTCM_AWARE_CHECK_MSG" %u:%u", in[3], out[3]); - + return 0; } @@ -433,38 +542,135 @@ 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]; + enum rte_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 */ - in[0] = in[1] = in[2] = in[3] = e_RTE_METER_GREEN; - out[0] = e_RTE_METER_GREEN; - out[1] = e_RTE_METER_YELLOW; - out[2] = e_RTE_METER_YELLOW; - out[3] = e_RTE_METER_RED; - if(tm_test_trtcm_aware_check(in, out) != 0) + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_GREEN; + out[0] = RTE_COLOR_GREEN; + out[1] = RTE_COLOR_YELLOW; + out[2] = RTE_COLOR_YELLOW; + out[3] = RTE_COLOR_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; - out[2] = e_RTE_METER_YELLOW; - out[3] = e_RTE_METER_RED; - if(tm_test_trtcm_aware_check(in, out) != 0) + + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_YELLOW; + out[0] = RTE_COLOR_YELLOW; + out[1] = RTE_COLOR_YELLOW; + out[2] = RTE_COLOR_YELLOW; + out[3] = RTE_COLOR_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; - out[2] = e_RTE_METER_RED; - out[3] = e_RTE_METER_RED; - if(tm_test_trtcm_aware_check(in, out) != 0) + + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_RED; + out[0] = RTE_COLOR_RED; + out[1] = RTE_COLOR_RED; + out[2] = RTE_COLOR_RED; + out[3] = RTE_COLOR_RED; + if (tm_test_trtcm_aware_check(in, out) != 0) + return -1; + + return 0; +} + +/** + * @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, + * 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 +tm_test_trtcm_rfc4115_aware_check +(enum rte_color in[4], enum rte_color out[4]) +{ +#define TRTCM_RFC4115_AWARE_CHECK_MSG "trtcm_rfc4115_aware_check" + struct rte_meter_trtcm_rfc4115_profile tp; + struct rte_meter_trtcm_rfc4115 tm; + uint64_t time; + uint64_t hz = rte_get_tsc_hz(); + + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_AWARE_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF - 1, in[0]) != out[0]) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG" %u:%u", in[0], out[0]); + + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_CBS_DF + 1, in[1]) != out[1]) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG" %u:%u", in[1], out[1]); + + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_EBS_DF - 1, in[2]) != out[2]) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG" %u:%u", in[2], out[2]); + + if (rte_meter_trtcm_rfc4115_profile_config(&tp, &rfc4115params) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + if (rte_meter_trtcm_rfc4115_config(&tm, &tp) != 0) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG); + time = rte_get_tsc_cycles() + hz; + if (rte_meter_trtcm_rfc4115_color_aware_check( + &tm, &tp, time, TM_TEST_TRTCM_EBS_DF + 1, in[3]) != out[3]) + melog(TRTCM_RFC4115_AWARE_CHECK_MSG" %u:%u", in[3], out[3]); + + return 0; +} + +/** + * functional test for rte_meter_trtcm_rfc4115_color_aware_check + */ +static inline int +tm_test_trtcm_rfc4115_color_aware_check(void) +{ + enum rte_color in[4], out[4]; + /** + * test 4 points that will produce green, yellow, yellow, red flag + * if using blind check + */ + + /* previouly have a green, test points should keep unchanged */ + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_GREEN; + out[0] = RTE_COLOR_GREEN; + out[1] = RTE_COLOR_YELLOW; + out[2] = RTE_COLOR_YELLOW; + out[3] = RTE_COLOR_RED; + if (tm_test_trtcm_rfc4115_aware_check(in, out) != 0) + return -1; + + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_YELLOW; + out[0] = RTE_COLOR_YELLOW; + out[1] = RTE_COLOR_YELLOW; + out[2] = RTE_COLOR_YELLOW; + out[3] = RTE_COLOR_RED; + if (tm_test_trtcm_rfc4115_aware_check(in, out) != 0) + return -1; + + in[0] = in[1] = in[2] = in[3] = RTE_COLOR_RED; + out[0] = RTE_COLOR_RED; + out[1] = RTE_COLOR_RED; + out[2] = RTE_COLOR_RED; + out[3] = RTE_COLOR_RED; + if (tm_test_trtcm_rfc4115_aware_check(in, out) != 0) return -1; return 0; @@ -473,37 +679,38 @@ 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 ) + if (tm_test_srtcm_config() != 0) return -1; - if(tm_test_trtcm_config() != 0 ) - return -1; + if (tm_test_trtcm_config() != 0) + return -1; - if(tm_test_srtcm_color_blind_check() != 0) + if (tm_test_trtcm_rfc4115_config() != 0) return -1; - if(tm_test_trtcm_color_blind_check()!= 0) + if (tm_test_srtcm_color_blind_check() != 0) return -1; - if(tm_test_srtcm_color_aware_check()!= 0) + if (tm_test_trtcm_color_blind_check() != 0) return -1; - - if(tm_test_trtcm_color_aware_check()!= 0) + + if (tm_test_trtcm_rfc4115_color_blind_check() != 0) return -1; - - return 0; -} + if (tm_test_srtcm_color_aware_check() != 0) + return -1; -#else /* RTE_LIBRTE_METER */ + if (tm_test_trtcm_color_aware_check() != 0) + return -1; + + if (tm_test_trtcm_rfc4115_color_aware_check() != 0) + return -1; -int -test_meter(void) -{ - printf("The meter library is not included in this build\n"); return 0; + } -#endif /* RTE_LIBRTE_METER */ + +REGISTER_TEST_COMMAND(meter_autotest, test_meter);