@@ -146,7 +146,9 @@ object_generator::object_generator() :
146
146
m_key_stddev(0 ),
147
147
m_key_median(0 ),
148
148
m_value_buffer(NULL ),
149
- m_random_fd(-1 )
149
+ m_random_fd(-1 ),
150
+ m_value_buffer_size(0 ),
151
+ m_value_buffer_mutation_pos(0 )
150
152
{
151
153
for (int i = 0 ; i < OBJECT_GENERATOR_KEY_ITERATORS; i++)
152
154
m_next_key[i] = 0 ;
@@ -218,6 +220,7 @@ void object_generator::alloc_value_buffer(void)
218
220
size = m_data_size.size_list ->largest ();
219
221
}
220
222
223
+ m_value_buffer_size = size;
221
224
if (size > 0 ) {
222
225
m_value_buffer = (char *) malloc (size);
223
226
assert (m_value_buffer != NULL );
@@ -274,6 +277,7 @@ void object_generator::alloc_value_buffer(const char* copy_from)
274
277
else if (m_data_size_type == data_size_weighted)
275
278
size = m_data_size.size_list ->largest ();
276
279
280
+ m_value_buffer_size = size;
277
281
if (size > 0 ) {
278
282
m_value_buffer = (char *) malloc (size);
279
283
assert (m_value_buffer != NULL );
@@ -416,6 +420,13 @@ data_object* object_generator::get_object(int iter)
416
420
expiry = random_range (m_expiry_min, m_expiry_max);
417
421
}
418
422
423
+ // modify object content in case of random data
424
+ if (m_random_data) {
425
+ m_value_buffer[m_value_buffer_mutation_pos++]++;
426
+ if (m_value_buffer_mutation_pos > m_value_buffer_size)
427
+ m_value_buffer_mutation_pos = 0 ;
428
+ }
429
+
419
430
// set object
420
431
m_object.set_key (m_key_buffer, strlen (m_key_buffer));
421
432
m_object.set_value (m_value_buffer, new_size);
0 commit comments