Bug Fix
- Fixed bug that was causing more non-unique UUIDs. Here are the
changes made:
- Task.cpp, tasks are no longer provided with a UUID in Task::Task.
This prevents the global context.task from being constructed before
srandom/srand is called.
- main.cpp, instead of srandom/srand (time (NULL)), it now uses
struct timeval tv_usec member, which has a micro-second granularity,
instead of time (NULL) which has a second granularity. When
"task add ..." is called in a unit test, several calls are made per
second, this the random number generator is seeded with the same
value.
- Modified the unit test to cover all 6 tasks created, instead of
5.
This commit is contained in:
@@ -38,8 +38,6 @@
|
||||
Task::Task ()
|
||||
: id (0)
|
||||
{
|
||||
// Each new task gets a uuid.
|
||||
set ("uuid", uuid ()); // No i18n
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include "Context.h"
|
||||
#include "../auto.h"
|
||||
|
||||
@@ -36,10 +36,12 @@ Context context;
|
||||
int main (int argc, char** argv)
|
||||
{
|
||||
// Set up randomness.
|
||||
struct timeval tv;
|
||||
::gettimeofday (&tv, NULL);
|
||||
#ifdef HAVE_SRANDOM
|
||||
srandom (time (NULL));
|
||||
srandom (tv.tv_usec);
|
||||
#else
|
||||
srand (time (NULL));
|
||||
srand (tv.tv_usec);
|
||||
#endif
|
||||
|
||||
int status = 0;
|
||||
|
||||
@@ -73,8 +73,13 @@ $output = qx{../task rc:uuid.rc 5 info};
|
||||
push @all_uuids, $uuid;
|
||||
$unique_uuids{$uuid} = undef;
|
||||
|
||||
is (scalar (@all_uuids), 5, '5 tasks created');
|
||||
is (scalar (keys %unique_uuids), 5, '5 unique UUIDs');
|
||||
$output = qx{../task rc:uuid.rc 6 info};
|
||||
($uuid) = $output =~ /UUID\s+(\S+)/;
|
||||
push @all_uuids, $uuid;
|
||||
$unique_uuids{$uuid} = undef;
|
||||
|
||||
is (scalar (@all_uuids), 6, '6 tasks created');
|
||||
is (scalar (keys %unique_uuids), 6, '6 unique UUIDs');
|
||||
|
||||
# Cleanup.
|
||||
unlink 'pending.data';
|
||||
|
||||
Reference in New Issue
Block a user