* Sequence of operations for a single key: * - add * - lookup: hit * - add: update * - lookup: hit (updated data) * - delete: hit */
| 165 | * - delete: hit |
| 166 | */ |
| 167 | static int test_add_update_delete(void) |
| 168 | { |
| 169 | struct rte_efd_table *handle; |
| 170 | printf("Entering %s\n", __func__); |
| 171 | /* test with standard add/lookup/delete functions */ |
| 172 | efd_value_t prev_value; |
| 173 | data[1] = mrand48() & VALUE_BITMASK; |
| 174 | |
| 175 | handle = rte_efd_create("test_add_update_delete", TABLE_SIZE, |
| 176 | sizeof(struct flow_key), |
| 177 | efd_get_all_sockets_bitmask(), test_socket_id); |
| 178 | TEST_ASSERT_NOT_NULL(handle, "Error creating the efd table\n"); |
| 179 | |
| 180 | TEST_ASSERT_SUCCESS(rte_efd_update(handle, test_socket_id, &keys[1], |
| 181 | data[1]), "Error inserting the key"); |
| 182 | print_key_info("Add", &keys[1], data[1]); |
| 183 | |
| 184 | TEST_ASSERT_EQUAL(rte_efd_lookup(handle, test_socket_id, &keys[1]), |
| 185 | data[1], "failed to find key"); |
| 186 | print_key_info("Lkp", &keys[1], data[1]); |
| 187 | |
| 188 | data[1] = data[1] + 1; |
| 189 | TEST_ASSERT_SUCCESS(rte_efd_update(handle, test_socket_id, &keys[1], |
| 190 | data[1]), "Error re-inserting the key"); |
| 191 | print_key_info("Add", &keys[1], data[1]); |
| 192 | |
| 193 | TEST_ASSERT_EQUAL(rte_efd_lookup(handle, test_socket_id, &keys[1]), |
| 194 | data[1], "failed to find key"); |
| 195 | print_key_info("Lkp", &keys[1], data[1]); |
| 196 | |
| 197 | TEST_ASSERT_SUCCESS(rte_efd_delete(handle, test_socket_id, &keys[1], |
| 198 | &prev_value), "failed to delete key"); |
| 199 | TEST_ASSERT_EQUAL(prev_value, data[1], |
| 200 | "failed to delete the expected value, got %d, " |
| 201 | "expected %d", prev_value, data[1]); |
| 202 | print_key_info("Del", &keys[1], data[1]); |
| 203 | |
| 204 | |
| 205 | rte_efd_free(handle); |
| 206 | return 0; |
| 207 | } |
| 208 | |
| 209 | /* |
| 210 | * Sequence of operations for find existing EFD table |
no test coverage detected