X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_table_combined.c;h=73ad0155d677a69cc3086dab36855d54725a4525;hb=09d9ae1ac9820c216991edc0d3c853fe28d37a66;hp=8724afa9db7e826301b08e22f0bfb04768ae6cea;hpb=a0d655ee2fe6d9223664ef7baae9b0b656298f29;p=dpdk.git diff --git a/app/test/test_table_combined.c b/app/test/test_table_combined.c index 8724afa9db..73ad0155d6 100644 --- a/app/test/test_table_combined.c +++ b/app/test/test_table_combined.c @@ -1,34 +1,5 @@ -/*- - * BSD LICENSE - * - * 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 - * 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-2016 Intel Corporation */ #include @@ -69,6 +40,7 @@ combined_table_test table_tests_combined[] = { test_table_hash16ext, test_table_hash32lru, test_table_hash32ext, + test_table_hash_cuckoo_combined, }; unsigned n_table_tests_combined = RTE_DIM(table_tests_combined); @@ -440,12 +412,15 @@ test_table_hash8lru(void) int status, i; /* Traffic flow */ - struct rte_table_hash_key8_lru_params key8lru_params = { - .n_entries = 1<<24, - .f_hash = pipeline_test_hash, - .signature_offset = APP_METADATA_OFFSET(0), + struct rte_table_hash_params key8lru_params = { + .name = "TABLE", + .key_size = 8, .key_offset = APP_METADATA_OFFSET(32), .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, + .f_hash = pipeline_test_hash, + .seed = 0, }; uint8_t key8lru[8]; @@ -474,14 +449,14 @@ test_table_hash8lru(void) VERIFY(status, CHECK_TABLE_OK); /* Invalid parameters */ - key8lru_params.n_entries = 0; + key8lru_params.n_keys = 0; status = test_table_type(&rte_table_hash_key8_lru_ops, (void *)&key8lru_params, (void *)key8lru, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key8lru_params.n_entries = 1<<16; + key8lru_params.n_keys = 1<<16; key8lru_params.f_hash = NULL; status = test_table_type(&rte_table_hash_key8_lru_ops, @@ -498,13 +473,15 @@ test_table_hash16lru(void) int status, i; /* Traffic flow */ - struct rte_table_hash_key16_lru_params key16lru_params = { - .n_entries = 1<<16, - .f_hash = pipeline_test_hash, - .seed = 0, - .signature_offset = APP_METADATA_OFFSET(0), + struct rte_table_hash_params key16lru_params = { + .name = "TABLE", + .key_size = 16, .key_offset = APP_METADATA_OFFSET(32), .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, + .f_hash = pipeline_test_hash, + .seed = 0, }; uint8_t key16lru[16]; @@ -533,14 +510,14 @@ test_table_hash16lru(void) VERIFY(status, CHECK_TABLE_OK); /* Invalid parameters */ - key16lru_params.n_entries = 0; + key16lru_params.n_keys = 0; status = test_table_type(&rte_table_hash_key16_lru_ops, (void *)&key16lru_params, (void *)key16lru, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key16lru_params.n_entries = 1<<16; + key16lru_params.n_keys = 1<<16; key16lru_params.f_hash = NULL; status = test_table_type(&rte_table_hash_key16_lru_ops, @@ -557,12 +534,15 @@ test_table_hash32lru(void) int status, i; /* Traffic flow */ - struct rte_table_hash_key32_lru_params key32lru_params = { - .n_entries = 1<<16, + struct rte_table_hash_params key32lru_params = { + .name = "TABLE", + .key_size = 32, + .key_offset = APP_METADATA_OFFSET(32), + .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, .f_hash = pipeline_test_hash, .seed = 0, - .signature_offset = APP_METADATA_OFFSET(0), - .key_offset = APP_METADATA_OFFSET(32), }; uint8_t key32lru[32]; @@ -591,14 +571,14 @@ test_table_hash32lru(void) VERIFY(status, CHECK_TABLE_OK); /* Invalid parameters */ - key32lru_params.n_entries = 0; + key32lru_params.n_keys = 0; status = test_table_type(&rte_table_hash_key32_lru_ops, (void *)&key32lru_params, (void *)key32lru, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key32lru_params.n_entries = 1<<16; + key32lru_params.n_keys = 1<<16; key32lru_params.f_hash = NULL; status = test_table_type(&rte_table_hash_key32_lru_ops, @@ -615,14 +595,15 @@ test_table_hash8ext(void) int status, i; /* Traffic flow */ - struct rte_table_hash_key8_ext_params key8ext_params = { - .n_entries = 1<<16, - .n_entries_ext = 1<<15, - .f_hash = pipeline_test_hash, - .seed = 0, - .signature_offset = APP_METADATA_OFFSET(0), + struct rte_table_hash_params key8ext_params = { + .name = "TABLE", + .key_size = 8, .key_offset = APP_METADATA_OFFSET(32), .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, + .f_hash = pipeline_test_hash, + .seed = 0, }; uint8_t key8ext[8]; @@ -651,14 +632,14 @@ test_table_hash8ext(void) VERIFY(status, CHECK_TABLE_OK); /* Invalid parameters */ - key8ext_params.n_entries = 0; + key8ext_params.n_keys = 0; status = test_table_type(&rte_table_hash_key8_ext_ops, (void *)&key8ext_params, (void *)key8ext, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key8ext_params.n_entries = 1<<16; + key8ext_params.n_keys = 1<<16; key8ext_params.f_hash = NULL; status = test_table_type(&rte_table_hash_key8_ext_ops, @@ -666,13 +647,6 @@ test_table_hash8ext(void) NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key8ext_params.f_hash = pipeline_test_hash; - key8ext_params.n_entries_ext = 0; - - status = test_table_type(&rte_table_hash_key8_ext_ops, - (void *)&key8ext_params, (void *)key8ext, &table_packets, NULL, 0); - VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - return 0; } @@ -682,14 +656,15 @@ test_table_hash16ext(void) int status, i; /* Traffic flow */ - struct rte_table_hash_key16_ext_params key16ext_params = { - .n_entries = 1<<16, - .n_entries_ext = 1<<15, - .f_hash = pipeline_test_hash, - .seed = 0, - .signature_offset = APP_METADATA_OFFSET(0), + struct rte_table_hash_params key16ext_params = { + .name = "TABLE", + .key_size = 16, .key_offset = APP_METADATA_OFFSET(32), .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, + .f_hash = pipeline_test_hash, + .seed = 0, }; uint8_t key16ext[16]; @@ -718,14 +693,14 @@ test_table_hash16ext(void) VERIFY(status, CHECK_TABLE_OK); /* Invalid parameters */ - key16ext_params.n_entries = 0; + key16ext_params.n_keys = 0; status = test_table_type(&rte_table_hash_key16_ext_ops, (void *)&key16ext_params, (void *)key16ext, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key16ext_params.n_entries = 1<<16; + key16ext_params.n_keys = 1<<16; key16ext_params.f_hash = NULL; status = test_table_type(&rte_table_hash_key16_ext_ops, @@ -733,13 +708,6 @@ test_table_hash16ext(void) NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key16ext_params.f_hash = pipeline_test_hash; - key16ext_params.n_entries_ext = 0; - - status = test_table_type(&rte_table_hash_key16_ext_ops, - (void *)&key16ext_params, (void *)key16ext, &table_packets, NULL, 0); - VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - return 0; } @@ -749,13 +717,15 @@ test_table_hash32ext(void) int status, i; /* Traffic flow */ - struct rte_table_hash_key32_ext_params key32ext_params = { - .n_entries = 1<<16, - .n_entries_ext = 1<<15, + struct rte_table_hash_params key32ext_params = { + .name = "TABLE", + .key_size = 32, + .key_offset = APP_METADATA_OFFSET(32), + .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, .f_hash = pipeline_test_hash, .seed = 0, - .signature_offset = APP_METADATA_OFFSET(0), - .key_offset = APP_METADATA_OFFSET(32), }; uint8_t key32ext[32]; @@ -784,14 +754,14 @@ test_table_hash32ext(void) VERIFY(status, CHECK_TABLE_OK); /* Invalid parameters */ - key32ext_params.n_entries = 0; + key32ext_params.n_keys = 0; status = test_table_type(&rte_table_hash_key32_ext_ops, (void *)&key32ext_params, (void *)key32ext, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key32ext_params.n_entries = 1<<16; + key32ext_params.n_keys = 1<<16; key32ext_params.f_hash = NULL; status = test_table_type(&rte_table_hash_key32_ext_ops, @@ -799,13 +769,75 @@ test_table_hash32ext(void) NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); - key32ext_params.f_hash = pipeline_test_hash; - key32ext_params.n_entries_ext = 0; + return 0; +} - status = test_table_type(&rte_table_hash_key32_ext_ops, - (void *)&key32ext_params, (void *)key32ext, &table_packets, +int +test_table_hash_cuckoo_combined(void) +{ + int status, i; + + /* Traffic flow */ + struct rte_table_hash_cuckoo_params cuckoo_params = { + .name = "TABLE", + .key_size = 32, + .key_offset = APP_METADATA_OFFSET(32), + .key_mask = NULL, + .n_keys = 1 << 16, + .n_buckets = 1 << 16, + .f_hash = pipeline_test_hash_cuckoo, + .seed = 0, + }; + + uint8_t key_cuckoo[32]; + uint32_t *kcuckoo = (uint32_t *) key_cuckoo; + + memset(key_cuckoo, 0, sizeof(key_cuckoo)); + kcuckoo[0] = 0xadadadad; + + struct table_packets table_packets; + + printf("--------------\n"); + printf("RUNNING TEST - %s\n", __func__); + printf("--------------\n"); + for (i = 0; i < 50; i++) + table_packets.hit_packet[i] = 0xadadadad; + + for (i = 0; i < 50; i++) + table_packets.miss_packet[i] = 0xbdadadad; + + table_packets.n_hit_packets = 50; + table_packets.n_miss_packets = 50; + + status = test_table_type(&rte_table_hash_cuckoo_ops, + (void *)&cuckoo_params, (void *)key_cuckoo, &table_packets, + NULL, 0); + VERIFY(status, CHECK_TABLE_OK); + + /* Invalid parameters */ + cuckoo_params.key_size = 0; + + status = test_table_type(&rte_table_hash_cuckoo_ops, + (void *)&cuckoo_params, (void *)key_cuckoo, &table_packets, + NULL, 0); + VERIFY(status, CHECK_TABLE_TABLE_CONFIG); + + cuckoo_params.key_size = 32; + cuckoo_params.n_keys = 0; + + status = test_table_type(&rte_table_hash_cuckoo_ops, + (void *)&cuckoo_params, (void *)key_cuckoo, &table_packets, + NULL, 0); + VERIFY(status, CHECK_TABLE_TABLE_CONFIG); + + cuckoo_params.n_keys = 1<<16; + cuckoo_params.f_hash = NULL; + + status = test_table_type(&rte_table_hash_cuckoo_ops, + (void *)&cuckoo_params, (void *)key_cuckoo, &table_packets, NULL, 0); VERIFY(status, CHECK_TABLE_TABLE_CONFIG); return 0; } +