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 ()
|
Task::Task ()
|
||||||
: id (0)
|
: id (0)
|
||||||
{
|
{
|
||||||
// Each new task gets a uuid.
|
|
||||||
set ("uuid", uuid ()); // No i18n
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <sys/time.h>
|
||||||
#include "Context.h"
|
#include "Context.h"
|
||||||
#include "../auto.h"
|
#include "../auto.h"
|
||||||
|
|
||||||
@@ -36,10 +36,12 @@ Context context;
|
|||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
// Set up randomness.
|
// Set up randomness.
|
||||||
|
struct timeval tv;
|
||||||
|
::gettimeofday (&tv, NULL);
|
||||||
#ifdef HAVE_SRANDOM
|
#ifdef HAVE_SRANDOM
|
||||||
srandom (time (NULL));
|
srandom (tv.tv_usec);
|
||||||
#else
|
#else
|
||||||
srand (time (NULL));
|
srand (tv.tv_usec);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|||||||
@@ -73,8 +73,13 @@ $output = qx{../task rc:uuid.rc 5 info};
|
|||||||
push @all_uuids, $uuid;
|
push @all_uuids, $uuid;
|
||||||
$unique_uuids{$uuid} = undef;
|
$unique_uuids{$uuid} = undef;
|
||||||
|
|
||||||
is (scalar (@all_uuids), 5, '5 tasks created');
|
$output = qx{../task rc:uuid.rc 6 info};
|
||||||
is (scalar (keys %unique_uuids), 5, '5 unique UUIDs');
|
($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.
|
# Cleanup.
|
||||||
unlink 'pending.data';
|
unlink 'pending.data';
|
||||||
|
|||||||
Reference in New Issue
Block a user