aboutsummaryrefslogtreecommitdiffstats
path: root/bootstrap-verify-perf.sh
AgeCommit message (Expand)AuthorFilesLines
2018-01-16Modify IPsec test triggerPeter Mikus1-4/+4
2018-01-10CSIT-866: wrk onboarding in CSITTibor Frank1-1/+0
2018-01-05VatHistory: Add ability to trace file executionsPeter Mikus1-0/+1
2017-11-28CSIT-865: Add manual trigger for HW cryptodev (IPSECHW) perf testsJan Gelety1-0/+17
2017-10-19Add IPSEC tests to DAILY Jenkins jobTibor Frank1-0/+1
2017-09-25Add memif to TEST_TAG casesJan Gelety1-0/+17
2017-08-02CSIT-742: Add manual trigger for ACL perf testsJan Gelety1-0/+9
2017-07-06CSIT-661: re-add vring256 tuned CFS for vpp workers and guest-testpmdJan Gelety1-1/+1
2017-07-03Remove DPDK package download from vpp-csit* jobsPeter Mikus1-6/+0
2017-06-30vpp-verify-perf-vhost runs pdrdisc testsTibor Frank1-1/+1
2017-06-29CSIT-687: Directory structure reorganizationTibor Frank1-28/+28
2017-06-23CSIT-614: Create PDRCHK testsTibor Frank1-6/+6
2017-06-02CSIT-572: Add script for data collection for reportTibor Frank1-1/+9
2017-04-24Download the latest VPP build for *NIGHTLY and *DAILY jobsTibor Frank1-1/+3
2017-04-24CSIT-554: Performance jobs reorganisation, part 4Tibor Frank1-0/+48
2017-04-24CSIT-557: Performance jobs reorganisation, part 3Tibor Frank1-0/+48
2017-04-19CSIT-559: Performance jobs reorganisation, part 3Tibor Frank1-0/+8
2017-04-19CSIT-558: Performance jobs reorganization, part 2Tibor Frank1-2/+26
2017-04-18CSIT-531: Performance jobs reorganization, part 1Tibor Frank1-5/+17
2017-04-10Don't use dpdk dev packages - weekly, func and perf jobsJan Gelety1-4/+1
2017-02-21Fix of centos bootstrap and dut_setup.shJan Gelety1-5/+5
2017-01-24Correction of dpdk packages download when vpp deb packages providedJan Gelety1-0/+8
2017-01-23Update of VPP_STABLE_VERJan Gelety1-2/+3
2017-01-12Clean up bootstrap-verify-perf filepmikus1-57/+2
2016-11-04CSIT-461 Fix VPP version variable in perf bootstrappmikus1-6/+8
2016-08-31CSIT-387 collect HW stats if binary search failsMiroslav Miklus1-7/+8
2016-08-22CSIT-370 use LATEST instead of STABLEMiroslav Miklus1-9/+21
2016-08-15CSIT-226: Install vpp-plugins deb package on DUTMatej Klotton1-0/+1
2016-08-09Make all perf tests CRITICALMiroslav Miklus1-1/+1
2016-08-02CSIT-311 New Nightly CSIT perf jobMiroslav Miklus1-1/+11
2016-08-01CSIT-310 Use multi-NIC topology filesMiroslav Miklus1-3/+3
2016-07-22CSIT-220: Rename directories in tests directoryMatej Klotton1-8/+10
2016-07-15Use vpp 16.09-rc0~233-gad2c9c0~b404 packageMiroslav Miklus1-12/+13
2016-07-15CSIT-106 Introduced SKIP_PATCH tag in perf suiteMiroslav Miklus1-1/+1
2016-07-01TEST: PERF pybot output set width to 150 charactersMiroslav Miklus1-1/+1
2016-06-27Mark all PERF tests as noncriticalMiroslav Miklus1-2/+1
2016-06-21Change VPP repo URLpmikus1-1/+1
2016-06-17Change VPP repo URLpmikus1-1/+1
2016-06-11Process output of robot to XML file for Plot pluginpmikus1-2/+4
2016-06-10VPP startup config change (rss->txqueues)Miroslav Miklus1-2/+2
2016-06-02CSIT-114: Eliminate repeated download of PIP packagesCarsten Koester1-1/+1
2016-05-31PATCH: Return pybot exit code in bootstrap-verify-perfPeter Mikus1-0/+13
2016-05-26Find PDR using binary searchPeter Mikus1-0/+13
2016-05-26Rename topology files with correct NIC namesMiroslav Miklus1-3/+3
2016-05-23Performance l2-vlan-dot1q library and short/long test casespmikus1-0/+7
2016-05-22TB3 topology file with X520-DA2 NICsMiroslav Miklus1-1/+2
2016-05-19TB1 topology file with X520-DA2 NICs onlyMiroslav Miklus1-1/+3
2016-05-19Parse robot output.xml for performance reportingpmikus1-0/+17
2016-05-18PERF bootstrap, apply global PYBOT args to all test typesMiroslav Miklus1-6/+12
2016-05-18Explicitly list the NIC type for perf testsMiroslav Miklus1-4/+4
ss="n">uword_to_pointer (h->user, mhash_t *); void *k1 = mhash_key_to_mem (hv, key1); void *k2 = mhash_key_to_mem (hv, key2); return vec_len (k1) == vec_len (k2) && memcmp (k1, k2, vec_len (k1)) == 0; } /* The CLIB hash user pointer must always point to a valid mhash_t. Now, the address of mhash_t can change (think vec_resize). So we must always be careful that it points to the correct address. */ always_inline void mhash_sanitize_hash_user (mhash_t * mh) { uword *hash = mh->hash; hash_t *h = hash_header (hash); h->user = pointer_to_uword (mh); } void mhash_init (mhash_t * h, uword n_value_bytes, uword n_key_bytes) { static struct { hash_key_sum_function_t *key_sum; hash_key_equal_function_t *key_equal; } t[] = { #define _(N_KEY_BYTES) \ [N_KEY_BYTES] = { \ .key_sum = mhash_key_sum_##N_KEY_BYTES, \ .key_equal = mhash_key_equal_##N_KEY_BYTES, \ }, foreach_mhash_key_size #undef _ [MHASH_C_STRING_KEY] = { .key_sum = mhash_key_sum_c_string,.key_equal = mhash_key_equal_c_string,}, [MHASH_VEC_STRING_KEY] = { .key_sum = mhash_key_sum_vec_string,.key_equal = mhash_key_equal_vec_string,},}; if (mhash_key_vector_is_heap (h)) heap_free (h->key_vector_or_heap); else vec_free (h->key_vector_or_heap); vec_free (h->key_vector_free_indices); { int i; for (i = 0; i < vec_len (h->key_tmps); i++) vec_free (h->key_tmps[i]); } vec_free (h->key_tmps); hash_free (h->hash); clib_memset (h, 0, sizeof (h[0])); h->n_key_bytes = n_key_bytes; vec_validate (h->key_tmps, os_get_nthreads () - 1); ASSERT (n_key_bytes < ARRAY_LEN (t)); h->hash = hash_create2 ( /* elts */ 0, /* user */ pointer_to_uword (h), /* value_bytes */ n_value_bytes, t[n_key_bytes].key_sum, t[n_key_bytes].key_equal, /* format pair/arg */ 0, 0); } static uword mhash_set_tmp_key (mhash_t * h, const void *key) { u8 *key_tmp; int my_cpu = os_get_thread_index (); key_tmp = h->key_tmps[my_cpu]; vec_reset_length (key_tmp); if (mhash_key_vector_is_heap (h)) { uword is_c_string = h->n_key_bytes == MHASH_C_STRING_KEY; if (is_c_string) vec_add (key_tmp, key, strlen (key) + 1); else vec_add (key_tmp, key, vec_len (key)); } else vec_add (key_tmp, key, h->n_key_bytes); h->key_tmps[my_cpu] = key_tmp; return ~0; } hash_pair_t * mhash_get_pair (mhash_t * h, const void *key) { uword ikey; mhash_sanitize_hash_user (h); ikey = mhash_set_tmp_key (h, key); return hash_get_pair (h->hash, ikey); } typedef struct { u32 heap_handle; /* Must coincide with vec_header. */ vec_header_t vec; } mhash_string_key_t; uword mhash_set_mem (mhash_t * h, void *key, uword * new_value, uword * old_value) { u8 *k; uword ikey, i, l = 0, n_key_bytes, old_n_elts, key_alloc_from_free_list = 0; mhash_sanitize_hash_user (h); if (mhash_key_vector_is_heap (h)) { mhash_string_key_t *sk; uword is_c_string = h->n_key_bytes == MHASH_C_STRING_KEY; uword handle; n_key_bytes = is_c_string ? (strlen (key) + 1) : vec_len (key); i = heap_alloc (h->key_vector_or_heap, n_key_bytes + sizeof (sk[0]), handle); sk = (void *) (h->key_vector_or_heap + i); sk->heap_handle = handle; sk->vec.len = n_key_bytes; clib_memcpy_fast (sk->vec.vector_data, key, n_key_bytes); /* Advance key past vector header. */ i += sizeof (sk[0]); } else { key_alloc_from_free_list = (l = vec_len (h->key_vector_free_indices)) > 0; if (key_alloc_from_free_list) { i = h->key_vector_free_indices[l - 1]; k = vec_elt_at_index (h->key_vector_or_heap, i); _vec_len (h->key_vector_free_indices) = l - 1; } else { vec_add2 (h->key_vector_or_heap, k, h->n_key_bytes); i = k - h->key_vector_or_heap; } n_key_bytes = h->n_key_bytes; clib_memcpy_fast (k, key, n_key_bytes); } ikey = i; old_n_elts = hash_elts (h->hash); h->hash = _hash_set3 (h->hash, ikey, new_value, old_value); /* If element already existed remove duplicate key. */ if (hash_elts (h->hash) == old_n_elts) { hash_pair_t *p; /* Fetch old key for return value. */ p = hash_get_pair (h->hash, ikey); ikey = p->key; /* Remove duplicate key. */ if (mhash_key_vector_is_heap (h)) { mhash_string_key_t *sk; sk = (void *) (h->key_vector_or_heap + i - sizeof (sk[0])); heap_dealloc (h->key_vector_or_heap, sk->heap_handle); } else { if (key_alloc_from_free_list) { h->key_vector_free_indices[l] = i; _vec_len (h->key_vector_free_indices) = l + 1; } else _vec_len (h->key_vector_or_heap) -= h->n_key_bytes; } } return ikey; } uword mhash_unset (mhash_t * h, void *key, uword * old_value) { hash_pair_t *p; uword i; mhash_sanitize_hash_user (h); i = mhash_set_tmp_key (h, key); p = hash_get_pair (h->hash, i); if (!p) return 0; ASSERT (p->key != ~0); i = p->key; if (mhash_key_vector_is_heap (h)) { mhash_string_key_t *sk; sk = (void *) (h->key_vector_or_heap + i) - sizeof (sk[0]); heap_dealloc (h->key_vector_or_heap, sk->heap_handle); } else vec_add1 (h->key_vector_free_indices, i); hash_unset3 (h->hash, i, old_value); return 1; } u8 * format_mhash_key (u8 * s, va_list * va) { mhash_t *h = va_arg (*va, mhash_t *); u32 ki = va_arg (*va, u32); void *k = mhash_key_to_mem (h, ki); if (mhash_key_vector_is_heap (h)) { uword is_c_string = h->n_key_bytes == MHASH_C_STRING_KEY; u32 l = is_c_string ? strlen (k) : vec_len (k); vec_add (s, k, l); } else if (h->format_key) s = format (s, "%U", h->format_key, k); else s = format (s, "%U", format_hex_bytes, k, h->n_key_bytes); return s; } /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */