Make the unit tests pass again after the bug2003 fix

This commit is contained in:
Nick Mathewson 2011-09-07 17:48:21 -04:00
parent d10ae9c028
commit 9bdde89027
3 changed files with 37 additions and 19 deletions

View File

@ -21,6 +21,7 @@ hibernating, phase 2:
- close all OR/AP/exit conns)
*/
#define HIBERNATE_PRIVATE
#include "or.h"
#include "config.h"
#include "connection.h"
@ -29,24 +30,6 @@ hibernating, phase 2:
#include "main.h"
#include "router.h"
/** Possible values of hibernate_state */
typedef enum {
/** We are running normally. */
HIBERNATE_STATE_LIVE=1,
/** We're trying to shut down cleanly, and we'll kill all active connections
* at shutdown_time. */
HIBERNATE_STATE_EXITING=2,
/** We're running low on allocated bandwidth for this period, so we won't
* accept any new connections. */
HIBERNATE_STATE_LOWBANDWIDTH=3,
/** We are hibernating, and we won't wake up till there's more bandwidth to
* use. */
HIBERNATE_STATE_DORMANT=4,
/** We start out in state default, which means we havent decided which state
* we're in. */
HIBERNATE_STATE_INITIAL=5
} hibernate_state_t;
extern long stats_n_seconds_working; /* published uptime */
/** Are we currently awake, asleep, running out of bandwidth, or shutting
@ -1025,3 +1008,12 @@ getinfo_helper_accounting(control_connection_t *conn,
return 0;
}
/**
* Manually change the hibernation state. Private; used only by the unit
* tests.
*/
void
hibernate_set_state_for_testing_(hibernate_state_t newstate)
{
hibernate_state = newstate;
}

View File

@ -25,5 +25,27 @@ int getinfo_helper_accounting(control_connection_t *conn,
const char *question, char **answer,
const char **errmsg);
#ifdef HIBERNATE_PRIVATE
/** Possible values of hibernate_state */
typedef enum {
/** We are running normally. */
HIBERNATE_STATE_LIVE=1,
/** We're trying to shut down cleanly, and we'll kill all active connections
* at shutdown_time. */
HIBERNATE_STATE_EXITING=2,
/** We're running low on allocated bandwidth for this period, so we won't
* accept any new connections. */
HIBERNATE_STATE_LOWBANDWIDTH=3,
/** We are hibernating, and we won't wake up till there's more bandwidth to
* use. */
HIBERNATE_STATE_DORMANT=4,
/** We start out in state default, which means we havent decided which state
* we're in. */
HIBERNATE_STATE_INITIAL=5
} hibernate_state_t;
void hibernate_set_state_for_testing_(hibernate_state_t newstate);
#endif
#endif

View File

@ -7,10 +7,12 @@
#define DIRSERV_PRIVATE
#define DIRVOTE_PRIVATE
#define ROUTER_PRIVATE
#define HIBERNATE_PRIVATE
#include "or.h"
#include "directory.h"
#include "dirserv.h"
#include "dirvote.h"
#include "hibernate.h"
#include "networkstatus.h"
#include "router.h"
#include "routerlist.h"
@ -85,6 +87,8 @@ test_dir_formats(void)
test_assert(pk1 && pk2 && pk3);
hibernate_set_state_for_testing_(HIBERNATE_STATE_LIVE);
get_platform_str(platform, sizeof(platform));
r1 = tor_malloc_zero(sizeof(routerinfo_t));
r1->address = tor_strdup("18.244.0.1");
@ -1301,7 +1305,7 @@ test_dir_v3_networkstatus(void)
}
#define DIR_LEGACY(name) \
{ #name, legacy_test_helper, 0, &legacy_setup, test_dir_ ## name }
{ #name, legacy_test_helper, TT_FORK, &legacy_setup, test_dir_ ## name }
#define DIR(name) \
{ #name, test_dir_##name, 0, NULL, NULL }