New make target check

Just a smoke test so far, extracted from src/scripts/nightly/.  This
makes the existing smoke test more easily accessible.  Noteworthy
differences:

* Instead of patching the code to make output more stable, postprocess
  the output to normalize it.

* Compare actual results to expected results instead of the previous
  test run's results.

* Much faster.  The old test harness used sleep liberally to "ensure"
  things always happen in the same order.

Known shortcomings:

* The smoke test hangs when the server fails to complete startup, or
  fails to terminate.

* Normalization of xdump hardcodes columns instead of getting them
  from xdump meta.

* Normalization of time values in xdump is an ugly hack.

* xdump meta column type isn't normalized.  Actual values can vary
  between systems, because the width of enumeration types is
  implementation-defined.  The smoke test works only when they're
  represented as int, which is the case on common systems.

* Currently expected to work only with thread package LWP and a
  random() that behaves exactly like the one on my development system,
  because:

  - Thread scheduling is reliably deterministic only with LWP

  - The PRN sequence produced by random() isn't portable

  - Shell builtin kill appears not to do the job in MinGW

  - The Windows server tries to run as service when -d isn't
    specified

Further work is needed to address these shortcomings.

Getting C programs behave exactly the same on all systems is hard.
We'll likely run into system-dependent differences that upset the
smoke test.  Floating-point computation seems particularly vulnerable.

Instead of updating src/scripts/nightly/ to use "make check", retire
it.  It hasn't been used in quite a while.  Investing more into our
homegrown auto-builder doesn't make sense, as canned auto-builders
such as Travis CI and Jenkins are readily available.

The shell scripts src/scripts/nightly/tests/?? become Empire batch
files tests/smoke/.  The shell scripts are actually shell boilerplate
around Empire batch files.  To make sure git recognizes the move, this
commit moves them unchanged.  tests/smoke-test strips the boilerplate
before it feeds the batch files to the client.  The next commit will
get rid fo that.
This commit is contained in:
Markus Armbruster 2012-07-14 08:46:38 +02:00
parent 2fefdaed15
commit 49b2b13a90
69 changed files with 17579 additions and 827 deletions

23
Make.mk
View file

@ -27,7 +27,7 @@
# Make.mk: The real Makefile, included by GNUmakefile # Make.mk: The real Makefile, included by GNUmakefile
# #
# Known contributors to this file: # Known contributors to this file:
# Markus Armbruster, 2005-2011 # Markus Armbruster, 2005-2012
# #
# This makefile was inspired by `Recursive Make Considered Harmful', # This makefile was inspired by `Recursive Make Considered Harmful',
@ -131,6 +131,8 @@ ttop := info/TOP.t
info.nr := $(addprefix info.nr/, $(info)) info.nr := $(addprefix info.nr/, $(info))
info.html := $(addprefix info.html/, $(addsuffix .html, $(info))) info.html := $(addprefix info.html/, $(addsuffix .html, $(info)))
info.all := $(info.nr) $(info.html) info.ps info.all := $(info.nr) $(info.html) info.ps
# Tests
# sandbox
# Conditionally generated files: # Conditionally generated files:
empth_obj := src/lib/empthread/io.o empth_obj := src/lib/empthread/io.o
@ -155,7 +157,7 @@ endif
# Each generated file should be in one of the following sets. # Each generated file should be in one of the following sets.
# Removed by clean: # Removed by clean:
clean := $(obj) $(deps) $(libs) $(util) $(client) $(server) $(tsubj) \ clean := $(obj) $(deps) $(libs) $(util) $(client) $(server) $(tsubj) \
$(ttop) $(info.all) $(empth_obj) $(empth_lib) $(ttop) $(info.all) $(empth_obj) $(empth_lib) sandbox
# Removed by distclean: # Removed by distclean:
distclean := $(ac) $(mk) distclean := $(ac) $(mk)
# Distributed by dist-source from $(srcdir): # Distributed by dist-source from $(srcdir):
@ -178,6 +180,10 @@ endif
$(client): LDLIBS := $(LIBS_client) $(client): LDLIBS := $(LIBS_client)
$(server): LDLIBS := $(LIBS_server) $(server): LDLIBS := $(LIBS_server)
# Self-tests
checks := check-smoke
### Advertized goals ### Advertized goals
.PHONY: all .PHONY: all
@ -189,7 +195,7 @@ html: $(info.html)
.PHONY: clean .PHONY: clean
clean: clean:
$(call quiet-command,rm -f $(clean),CLEAN) $(call quiet-command,rm -rf $(clean),CLEAN)
.PHONY: distclean .PHONY: distclean
distclean: clean distclean: clean
@ -244,6 +250,17 @@ uninstall:
.PHONY: dist .PHONY: dist
dist: dist-source dist-client dist-info dist: dist-source dist-client dist-info
.PHONY: check $(checks)
check: $(checks)
$(checks): all
check-smoke:
@echo "Warning: smoke test is immature and needs work." >&2
ifeq ($(empthread),LWP)
$(srcdir)/tests/smoke-test $(srcdir)
else
@echo "$(srcdir)/tests/smoke-test SKIPPED"
endif
### Implicit rules ### Implicit rules

View file

@ -1,2 +0,0 @@
boxes
logs

View file

@ -1,32 +0,0 @@
#
# Common functions
#
# Blame it on marcolz
#
err() {
echo "ERROR: $@" >&2
exit 1
}
warn() {
echo "WARNING: $@" >&2
}
trykill() {
[ -n "$1" ] || { warn "INTERNAL ERROR: trykill: no argument ?" ; return 2 ; }
kill -TERM "$1" || { warn "Could not kill pid '${1}'" ; return 1 ; }
sleep 1
/bin/kill -KILL "$1" 2>/dev/null && { warn "Process ${1} would not die" ; }
sleep 1
/bin/kill -KILL "$1" 2>/dev/null && { warn "Process ${1} would not die after -KILL" ; return 1 ; }
return 0
}
runfeed() {
[ -n "$1" ] || { warn "INTERNAL ERROR: No coun/repr given ?" ; return 2 ; }
REP="$2"
[ -n "$REP" ] || REP="$1"
${EMPIRE_PATH}/empire "$1" "$REP" || { warn "empire not ok ?" ; return 1 ; }
return 0
}

View file

@ -1,8 +0,0 @@
SCRIPTDIR=/home/empire
BOXDIR=boxes
LOGDIR=logs
INSTANCE=ubuntu-lwp.i386
EMPPORT=8889
NIGHTLY_SKIP_STEP=
GITROOT=/home/empire/empserver.git
export LANG=C

View file

@ -1,9 +0,0 @@
SCRIPTDIR=/home/empire
BOXDIR=boxes
LOGDIR=logs
INSTANCE=ubuntu-pthread.i386
EMPPORT=8889
NIGHTLY_SKIP_STEP=
GITROOT=/home/empire/empserver.git
export LANG=C
export CONFIGURE_OPTIONS="--with-pthread"

View file

@ -1,10 +0,0 @@
SCRIPTDIR=/home/empire
export BOXDIR=boxes
LOGDIR=logs
export INSTANCE=win32.i386
EMPPORT=8889
NIGHTLY_SKIP_STEP=
GITROOT=ssh://ron-VM3/~empire/empserver.git
PATH=$PATH:/c/Progra~1/git/bin
export MINGW_DIR="c:/MinGW"

View file

@ -1,8 +0,0 @@
#!/bin/sh
cd /home/empire/empserver.git
git pull 2>&1 >/dev/null
cd /home/empire
./nightlybuild.sh ubuntu-lwp.i386.config
./report.sh ubuntu-lwp.i386.config | mutt -s 'empserver ubuntu-lwp.i386' empserver-devel@lists.sourceforge.net
./nightlybuild.sh ubuntu-pthread.i386.config
./report.sh ubuntu-pthread.i386.config | mutt -s 'empserver ubuntu-pthread.i386' empserver-devel@lists.sourceforge.net

View file

@ -1,5 +0,0 @@
#!/bin/sh
cd /home/empire
./nightlybuild.sh win32.i386.config </dev/null
./report.sh win32.i386.config | /c/download/blat250/full/blat.exe -to empserver-devel@lists.sourceforge.net -subject "empserver win32.i386" -p ron
:end

View file

@ -1,35 +0,0 @@
#!/bin/sh
#
# Check differences between the last two logs
#
# Blame it on marcolz
#
PROGNAME="$0"
usage() {
echo "Usage: ${PROGNAME} <configfile>" >&2;
exit 1;
}
[ $# -lt 1 ] && usage
[ -f "$1" ] || usage
# Source config file
case "$1"
in
*/*)
. "$1"
;;
*)
. ./"$1"
;;
esac
[ -f "${SCRIPTDIR}/common.sh" ] || { echo "Broken config ?" >&2; exit 1; }
. "${SCRIPTDIR}"/common.sh
cd "${LOGDIR}" || err "Could not cd to ${LOGDIR}"
diff -u $(ls "${INSTANCE}."* | tail -2)

View file

@ -1,496 +0,0 @@
#!/bin/sh
#
# Blame it on marcolz
#
# Skip certain parts of this script by exporting the variable
# "NIGHTLY_SKIP_STEP" containing the following possible substrings,
# preventing the named behaviour:
#
# REDIRECT - Redirect all output to a logfile
# CHECKOUT - Fill the sandbox with a fresh checkout
# PATCH - Apply the patches for this system (global + specific)
# BUILD - Build everything
# GENERATE - Generate a new world
# SERVERSTART - Start the server
# TESTSCRIPT - Run the testscript
# SERVERSTOP - Stop the server if it was started by this script
# CLEANUP - Remove the contents of the sandbox
# REMOVE_REPOSITORY Removes the git repository when cleaning up
#
PROGNAME="$0"
TERM="${TERM:-vt100}"
export TERM
usage() {
echo "Usage: ${PROGNAME} <configfile>" >&2;
exit 1;
}
[ $# -lt 1 ] && usage
[ -f "$1" ] || usage
# Source config file
case "$1"
in
*/*)
. "$1"
;;
*)
. ./"$1"
;;
esac
[ -f "${SCRIPTDIR}/common.sh" ] || { echo "Broken config ?" >&2; exit 1; }
. "${SCRIPTDIR}"/common.sh
export SCRIPTDIR
STAMP="`date +%Y%m%d%H%M%S`"
WORKDIR="${INSTANCE}"
[ -n "${EXTRASUFFIX}" ] && WORKDIR="${WORKDIR}.${EXTRASUFFIX}"
LOGFILE="${LOGDIR}/${WORKDIR}.${STAMP}"
#
# START REDIRECT
#
case "${NIGHTLY_SKIP_STEP}"
in
*REDIRECT*) ;;
*)
# Log everything
exec > "${LOGFILE}"
exec 2>&1
;;
esac
#
# END REDIRECT
#
case "${BOXDIR}"
in
/*)
;;
*)
BOXDIR="${SCRIPTDIR}/${BOXDIR}"
;;
esac
cd "${BOXDIR}" || err "Could not chdir to ${BOXDIR}"
echo "Nightly build starting at `date`"
#
# START CHECKOUT
#
case "${NIGHTLY_SKIP_STEP}"
in
*CHECKOUT*) ;;
*)
# Make sandbox
if [ -d "${WORKDIR}" ]
then
[ -d "${WORKDIR}"/empserver/.git ] || err "Invalid sandbox, missing .git directory"
else
echo making directory
mkdir "${WORKDIR}" || warn "Could not create ${BOXDIR}/${WORKDIR}"
fi
cd "${WORKDIR}" || err "Could not cd to ${BOXDIR}/${WORKDIR}"
echo "Getting source from GIT:"
# Extract source
export GITROOT=${GITROOT:= git://git.pond.sub.org/~armbru/empserver}
RETR=0
if ! [ -d empserver ]
then
while ! git clone --quiet $GITROOT empserver >/dev/null
do
sleep "`expr 5 + ${RETR}`"
RETR="`expr 1 + ${RETR}`"
[ "${RETR}" -gt 5 ] && err "git clone Timeout after ${RETR} retres."
done
cd empserver || err "Could not cd to ${BOXDIR}/${WORKDIR}/empserver."
else
cd empserver || err "Could not cd to ${BOXDIR}/${WORKDIR}/empserver."
while ! git pull --quiet $GITROOT master >/dev/null
do
sleep "`expr 5 + ${RETR}`"
RETR="`expr 1 + ${RETR}`"
[ "${RETR}" -gt 5 ] && err "GIT pull Timeout after ${RETR} retres."
done
fi
echo "Commit `git describe --match 'v*' --always`"
echo "Done (GIT)."
echo ""
;;
esac
#
# END CHECKOUT
#
#
# START PATCH
#
cd "${BOXDIR}/${WORKDIR}/empserver" || err "Could not cd to ${BOXDIR}/${WORKDIR}/empserver"
case "${NIGHTLY_SKIP_STEP}"
in
*PATCH*) ;;
*)
echo "Applying global patches from ${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/patches/All"
for i in "${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/patches/All"/*.patch
do
[ -r "${i}" ] || continue
if git apply "${i}" >/dev/null
then
echo "${i}: OK"
else
echo "========== ${i}: NOT OK! ${?} =========="
fi
done
echo "Done (patch All)."
echo ""
LOCALPATCHDIRECTORY="${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/patches/${INSTANCE}"
if [ -n "${LOCALPATCHDIRECTORY}" -a -d "${LOCALPATCHDIRECTORY}/." ]
then
echo "Applying system specific patches from ${LOCALPATCHDIRECTORY}:"
for i in "${LOCALPATCHDIRECTORY}"/*.patch
do
[ -r "${i}" ] || continue
if git apply "${i}" >/dev/null
then
echo "${i}: OK"
else
echo "========== ${i}: NOT OK! ${?} =========="
fi
done
echo "Done (patch specific)."
echo ""
fi
echo "Apply controlled time patch."
for f in `git-ls-files | grep -E '\.[ch](\.in)?$' | xargs grep -l \>`
do
n=`grep -n '^[ ]*#[ ]*include\>' $f | tail -n 1 | sed 's/:.*//'`
if [ $n ]
then
sed "$n"'a\
#include "emptime.h"\
#undef time\
#define time(timer) emp_time((timer), __FUNCTION__)\
#undef gettimeofday\
#define gettimeofday(tv, tz) emp_gettimeofday((tv), (tz))' $f >$f.patched
mv $f.patched $f
fi
done
git add include/emptime.h src/lib/gen/emptime.c
echo "Done applying controlled time patch."
echo ""
git pull --quiet
sh ./bootstrap
./configure --prefix ${BOXDIR}/${WORKDIR}/emp4 ${CONFIGURE_OPTIONS}
;;
esac
#
# END PATCH
#
#
# START BUILD
#
case "${NIGHTLY_SKIP_STEP}"
in
*BUILD*) ;;
*)
# Start the build
echo "Building server"
if make -k install >/dev/null
then
warn "make did not return 0"
fi
echo "Done (make)."
echo ""
;;
esac
#
# END BUILD
#
cd "${BOXDIR}/${WORKDIR}" || err "Could not cd to ${BOXDIR}/${WORKDIR}"
# Try to run startup utilities
for onetime in 1
do
#
# START GENERATE
#
case "${NIGHTLY_SKIP_STEP}"
in
*GENERATE*) ;;
*)
if [ -d emp4 -a -d emp4/bin -a -d emp4/sbin -a -d emp4/var/empire ]
then
echo "Directory structure is ok"
else
warn "Directory structure is NOT ok"
break
fi
if [ ! -f emp4/etc/empire/schedule ]
then
warn "schedule file is missing"
break
fi
if [ ! -f emp4/etc/empire/econfig ]
then
warn "econfig file is missing"
break
fi
if ! emp4/sbin/pconfig >emp4/etc/empire/econfig
then
warn "pconfig failed to create econfig file"
break
fi
echo "Applying global econfig patches from ${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/patches/All"
for i in "${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/patches/All"/*.econfig
do
[ -r "${i}" ] || continue
if "${i}" >>emp4/etc/empire/econfig
then
echo "${i}: OK"
else
echo "========== ${i}: NOT OK! ${?} =========="
fi
done
echo "Done (econfig patch All)."
echo ""
LOCALPATCHDIRECTORY="${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/patches/${INSTANCE}"
if [ -n "${LOCALPATCHDIRECTORY}" -a -d "${LOCALPATCHDIRECTORY}/." ]
then
echo "Applying system specific econfig patches from ${LOCALPATCHDIRECTORY}:"
for i in "${LOCALPATCHDIRECTORY}"/*.econfig
do
[ -r "${i}" ] || continue
if "${i}" >>emp4/etc/empire/econfig
then
echo "${i}: OK"
else
echo "========== ${i}: NOT OK! ${?} =========="
fi
done
echo "Done (econfig patch specific)."
echo ""
fi
cd emp4/bin || err "Could not cd to emp4/bin"
echo "Determining type of files in bin directory"
file *
echo "Done (file *)."
echo ""
cd ../sbin || err "Could not cd to ../sbin"
echo "Determining type of files in sbin directory"
file *
echo "Done (file *)."
echo ""
echo "Running files and fairland"
echo y | ./files -e ../etc/empire/econfig || warn "Error running files"
./fairland -R 1 -e ../etc/empire/econfig 10 30 >/dev/null || { warn "Error running fairland" ; break ; }
[ -s "newcap_script" ] || { warn "fairland did not produce newcap_script" ; break ; }
echo "Done (files & fairland)."
echo ""
;;
esac
#
# END GENERATE
#
#
# START SERVERSTART
#
case "${NIGHTLY_SKIP_STEP}"
in
*SERVERSTART*) ;;
*)
echo "Removing existing server.log and journal.log"
if [ -f "../var/empire/server.log" ]
then
rm "../var/empire/server.log"
fi
if [ -f "../var/empire/journal.log" ]
then
rm "../var/empire/journal.log"
fi
echo "Removing existing schedule"
if [ -f "../etc/empire/schedule" ]
then
>../etc/empire/schedule
fi
echo "Starting server with -d in the background"
./emp_server -R 1 -e ../etc/empire/econfig -d 2>/dev/null &
PID="$!"
sleep 1
kill -0 "${PID}" || { warn "emp_server not running ?" ; break ; }
echo "Done (emp_server)."
echo ""
;;
esac
#
# END SERVERSTART
#
#
# START GENERATE (2nd part)
#
case "${NIGHTLY_SKIP_STEP}"
in
*GENERATE*) ;;
*)
export EMPIRE_PATH=${BOXDIR}/${WORKDIR}/emp4/bin
echo "Running newcap_script through empire"
runfeed POGO peter < newcap_script >/dev/null 2>&1 ||
{
warn "Could not run newcap_script"
echo "Stopping server"
trykill $PID
break
}
echo "Done (newcap_script / empire)."
echo ""
;;
esac
#
# END GENERATE (2nd part)
#
#
# START TESTSCRIPT
#
case "${NIGHTLY_SKIP_STEP}"
in
*TESTSCRIPT*) ;;
*)
echo "Applying tests from ${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/tests"
cd ${BOXDIR}/${WORKDIR}/empserver/src/scripts/nightly/tests
for i in *
do
[ -d "$i" ] || continue
cd "$i"
if [ "$i" -ne "00" ]
then
echo "Update Turn $i starting"
if ../update
then
echo "Update Turn $i completed successfully"
else
echo "Update Turn $i failed"
fi
fi
for j in *
do
[ -x "$j" ] || continue
echo "Player $j Turn $i starting"
if ./"$j"
then
echo "Player $j Turn $i completed successfully"
else
echo "Player $j Turn $i failed"
fi
done
cd ..
done
echo "Done tests."
echo ""
;;
esac
#
# END TESTSCRIPT
#
#
# START SERVERSTOP
#
case "${NIGHTLY_SKIP_STEP}"
in
*SERVERSTOP*) ;;
*)
case "${NIGHTLY_SKIP_STEP}"
in
*SERVERSTART*) ;;
*)
echo "Stopping server"
trykill "${PID}"
echo "Done (kill)."
cd "${BOXDIR}/${WORKDIR}/emp4/var/empire" || err "Could not cd to ${BOXDIR}/${WORKDIR}/emp4/var/empire"
echo "-- Start Server Log --"
cat server.log
echo "-- End of Server Log --"
echo "-- Start Journal Log --"
cat journal.log
echo "-- End of Journal Log --"
echo "Server stopped"
;;
esac
;;
esac
#
# END SERVERSTOP
#
done
#
# START CLEANUP
#
case "${NIGHTLY_SKIP_STEP}"
in
*CLEANUP*) ;;
*)
echo "Cleaning sandbox"
cd "${BOXDIR}" || err "Could not cd back to sandbox root !"
case "${NIGHTLY_SKIP_STEP}"
in
*REMOVE_REPOSITORY*)
rm -rf `find "${WORKDIR}" -maxdepth 1 ! -name .git` || warn "Directory ${WORKDIR} could not be forcibly removed !"
;;
*)
rm -rf "${WORKDIR}" || warn "Directory ${WORKDIR} could not be forcibly removed !"
[ -d "${WORKDIR}/." ] && warn "Directory ${WORKDIR} still present"
;;
esac
echo "Done (cleaning)."
;;
esac
#
# END CLEANUP
#
echo "Nightly build finished at `date`"
exit 0

View file

@ -1,5 +0,0 @@
Nota Bene:
The patches in these directories are executed in alphabetical order. One
patch could influence the other, by patching the same files for
instance.

View file

@ -1,115 +0,0 @@
diff --git a/include/emptime.h b/include/emptime.h
new file mode 100644
index 0000000..3c1eb7b
--- /dev/null
+++ b/include/emptime.h
@@ -0,0 +1,43 @@
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Ken Stevens, Steve McClure, Markus Armbruster
+ *
+ * Empire is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ---
+ *
+ * See files README, COPYING and CREDITS in the root of the source
+ * tree for related information and legal notices. It is expected
+ * that future projects/authors will amend these files as needed.
+ *
+ * ---
+ *
+ * emptime.h: Time functions for regression testing
+ *
+ * Known contributors to this file:
+ * Ron Koenderink, 2008
+ * Markus Armbruster, 2012
+ */
+
+#ifndef EMPTIME_H
+#define EMPTIME_H
+
+#include <sys/time.h>
+#include <time.h>
+
+extern time_t emp_time(time_t *, const char []);
+extern int emp_gettimeofday(struct timeval *, void *);
+
+#endif
diff --git a/src/lib/gen/emptime.c b/src/lib/gen/emptime.c
new file mode 100644
index 0000000..4461093
--- /dev/null
+++ b/src/lib/gen/emptime.c
@@ -0,0 +1,60 @@
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Ken Stevens, Steve McClure, Markus Armbruster
+ *
+ * Empire is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ---
+ *
+ * See files README, COPYING and CREDITS in the root of the source
+ * tree for related information and legal notices. It is expected
+ * that future projects/authors will amend these files as needed.
+ *
+ * ---
+ *
+ * emptime.c: Time functions for regression testing
+ *
+ * Known contributors to this file:
+ * Ron Koenderink, 2008
+ * Markus Armbruster, 2012
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "emptime.h"
+
+static time_t now = (time_t)100L;
+
+time_t
+emp_time(time_t * time_ptr, const char function[])
+{
+ if (strcmp(function, "update_main") == 0)
+ now += 100L;
+
+ if (time_ptr != NULL)
+ *time_ptr = now;
+
+ return now;
+}
+
+int
+emp_gettimeofday(struct timeval *tv, void *tz)
+{
+ if (tv) {
+ tv->tv_sec = now;
+ tv->tv_usec = 0;
+ }
+ return 0;
+}

View file

@ -1 +0,0 @@
echo keep_journal 1

View file

@ -1,12 +0,0 @@
Index: empserver/src/lib/subs/pr.c
--- empserver/src/lib/subs/pr.c 18 Aug 2007 17:03:13 -0000 1.41
+++ empserver/src/lib/subs/pr.c 9 Sep 2007 02:42:51 -0000
@@ -351,7 +358,7 @@
void
prprompt(int min, int btu)
{
- pr_id(player, C_PROMPT, "%d %d\n", min, btu);
+ pr_id(player, C_PROMPT, "0 640\n"); /* Hack for nightlybuild */
}
/*

View file

@ -1 +0,0 @@
#echo pre_update_hook '"echo pre_update_hook executed here"'

View file

@ -1,3 +0,0 @@
echo data "$MINGW_DIR$BOXDIR/$INSTANCE/emp4/var/empire"
echo info "$MINGW_DIR$BOXDIR/$INSTANCE/emp4/share/empire/info.nr"
echo builtin "$MINGW_DIR$BOXDIR/$INSTANCE/emp4/share/empire/builtin"

View file

@ -1,71 +0,0 @@
#!/bin/sh
#
# Generate report from the last two build logs
#
# Blame it on marcolz
#
INTERPRETER="$_"
case "$INTERPRETER"
in
*/ksh|ksh)
;;
*)
if [ "`uname`" = "SunOS" ]
then
exec ksh "$0" "$@"
fi
;;
esac
PROGNAME="$0"
usage() {
echo "Usage: ${PROGNAME} <configfile>" >&2;
exit 1;
}
[ $# -lt 1 ] && usage
[ -f "$1" ] || usage
# Source config file
case "$1"
in
*/*)
. "$1"
;;
*)
. ./"$1"
;;
esac
[ -f "${SCRIPTDIR}/common.sh" ] || { echo "Broken config ?" >&2; exit 1; }
. "${SCRIPTDIR}"/common.sh
cd "${LOGDIR}" || err "Could not cd to ${LOGDIR}"
BUILDTYPE="${INSTANCE}"
[ -n "${EXTRASUFFIX}" ] && BUILDTYPE="${BUILDTYPE}.${EXTRASUFFIX}"
echo "This was generated using: ${0} ${1}"
echo ""
echo "Sections: <diff> <full>"
echo ""
echo "Environment:"
echo "uname -a: $(uname -a)"
echo "gcc -v: $(gcc -v 2>&1)"
echo ""
echo "========================================="
echo "===== Differences since last build: ====="
echo "========================================="
echo ""
diff -u `ls "${BUILDTYPE}."* | tail -2`
echo ""
echo "========================================="
echo "================ Full log: =============="
echo "========================================="
echo ""
cat `ls "${BUILDTYPE}."* | tail -1`

View file

@ -1,11 +0,0 @@
#!/bin/sh
. "${SCRIPTDIR}"/common.sh
runfeed POGO peter << EOF
power new
report *
cen * ?own#0
comm * ?own#0
reso * ?own#0
force
EOF
sleep 10

129
tests/normalize.pl Executable file
View file

@ -0,0 +1,129 @@
#!/usr/bin/perl
# TODO Don't hardcode xdump columns, get them from xdump meta
use warnings;
use strict;
use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = 1;
our ($opt_j, $opt_s);
getopts('js')
or die "$0: invalid options\n";
die "$0: either -j or -s, not both\n"
if $opt_j && $opt_s;
my $ctime_re = qr/(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [ 123][0-9] [0-2][0-9]:[0-5][0-9]:[0-6][0-9] [0-9][0-9][0-9][0-9]/;
my $xdfld_re = qr/\([^)]*\)|[^ (][^ ]*/;
# Current dump, if any
# Either zero or the name of the dump we're currently processing.
# Legacy dump names start with an uppercase letter, and xdump names
# start with a lowercase letter.
my $dump = "";
sub norm_ctime {
my ($s) = @_;
$s =~ s/$ctime_re/Thu Jan 1 00:00:00 1970/g;
return $s;
}
while (<>) {
chomp;
my $pfx = '';
if ($opt_j || $opt_s) {
die "$0: malformed line" unless substr($_, 24, 1) eq ' ';
$pfx .= norm_ctime(substr($_, 0, 25));
$_ = substr($_, 25);
}
if ($opt_j) {
die "$0: malformed line" unless substr($_, 10, 1) eq ' ';
$pfx .= substr($_, 0, 11);
$_ = substr($_, 11);
if (/(^output [^ ]* 1 )(.*)/) {
$pfx .= $1;
$_ = $2;
} else {
$pfx .= $_;
$_ = '';
}
}
if ($opt_s) {
$_ = norm_ctime($_);
### Host environment in logs
# getrusage() results in server.log
s/(End update|done assembling paths) .* user .* system/$1 0.0 user 0.0 system/g;
# PID in server.log
s/(Empire server \(pid) [0-9]+(\) started)/$1 42$2/g;
### Harmless races
# shutdown wins race with logout
next if /Waiting for player threads to terminate/;
print "$pfx$_\n";
next;
}
$dump = ""
if ($dump =~ /^[a-z]/
and /^\//)
or ($dump =~ /^[A-Z]/
and (/\: No (sector|ship|plane|unit|nuke)\(s\)|\: Nothing lost/
or /^[0-9]+ (sector|ship|plane|unit|nuke|lost item)/));
### Formatted time
# nat_timeused in prompt
s/^\[[0-9]+(:[0-9]+\] Command \:)/[0$1/g;
# TODO command play column time
# result of ctime() in many commands
$_ = norm_ctime($_)
unless $dump;
### Time values in legacy dumps
s/(DUMP (SECTOR|SHIPS|PLANES|LAND UNITS|NUKES|LOST ITEMS)) [0-9]+$/$1 0/g;
s/ [0-9]+$/ 0/
if $dump eq 'LOST ITEMS';
### Time values in xdump
s/(XDUMP (meta )?[-a-z0-9]+) [0-9]+$/$1 0/
unless $dump;
# HACK: assume any integer with more than 10 digits is time
# TODO don't do that, use xdump meta instead
s/(^| )[0-9]{10,}/${1}0/g
if $dump =~ /^[a-z]/;
# timeused in xdump country (column 9)
s/^(($xdfld_re ){9})([0-9]+) /${1}255 /
if $dump eq 'country';
# timeused in xdump nat (column 14)
s/^(($xdfld_re ){14})([0-9]+) /${1}255 /
if $dump eq 'nat';
# duration in xdump news (column 4)
s/^(($xdfld_re ){4})([0-9]+) /${1}0 /
if $dump eq 'news';
### nsc_type values in xdump
# Can vary between systems, because the width of enumeration types
# is implementation-defined.
# TODO type in xdump meta
### nrndx values in xdump
# Encoding depends on the host, see resources[]. Too clever by half;
# perhaps we should change it.
# nrndx in xdump product (column 12)
s/^(($xdfld_re ){12})([0-9]+) /${1}0 /
if $dump eq 'product';
# value in xdump resources (column 0)
s/^[0-9]+ /0 /
if $dump eq 'resources';
### Floating-point zero in xdump
# Windows %#g prints it with seven significant digits instead of six
s/ 0\.000000/ 0.00000/g
if $dump =~ /^[a-z]/;
print "$pfx$_\n";
if (/XDUMP (meta )?([-a-z0-9]+)/) {
$dump = $2;
die unless $dump =~ /^[a-z]/;
} elsif (/DUMP (SECTOR|SHIPS|PLANES|LAND UNITS|NUKES|LOST ITEMS) /) {
$dump = $1;
}
}

132
tests/smoke-test Executable file
View file

@ -0,0 +1,132 @@
#!/bin/sh -e
# Smoke test for Empire
if [ $# -ne 1 ]
then echo "Usage: $0 SRCDIR" >&2; exit 1
fi
srcdir="$1"
export EMPIREHOST=127.0.0.1 LOGNAME=tester
if [ -x ./config.status ] && ./config.status --version | grep -q '^Wolfpack Empire'
then :
else echo "$0: Must be run in root of build tree" >&2; exit 1
fi
#
# Currently expected to work only with thread package LWP and a
# random() that behaves exactly like the one on my development system,
# because:
#
# - Thread scheduling is reliably deterministic only with LWP
# - The PRN sequence produced by random() isn't portable
# - Shell builtin kill appears not to do the job in MinGW
# - The Windows server tries to run as service when -d isn't
# specified
#
# TODO address these shortcomings.
#
if [ "`uname -s`" != "Linux" ] # lame approx. of "random() behaves like mine"
then echo "Warning: smoke test not expected to work on this system!" >&2
elif [ `sed -n 's/empthread *:= *\(.*\)/\1/p' <GNUmakefile` != LWP ]
then echo "Warning: smoke test not expected to work with this thread package!" >&2
fi
# Create sandbox
rm -rf sandbox
mkdir -p sandbox/etc/empire sandbox/share/empire/builtin sandbox/var/empire
touch sandbox/etc/empire/schedule
cat >sandbox/etc/empire/econfig <<EOF
data "../../var/empire"
info "../../../../info.nr"
builtin "../../share/empire/builtin"
listen_addr "$EMPIREHOST"
keep_journal 1
EOF
cp "$srcdir"/src/lib/global/*.config sandbox/share/empire/builtin
exec 3>sandbox/smoke.out
pid=
trap 'if [ "$pid" ]; then kill "$pid" 2>/dev/null || true; fi' EXIT
# Create world and start server
src/util/files -e sandbox/etc/empire/econfig -f >&3
src/util/fairland -e sandbox/etc/empire/econfig -q -s sandbox/newcap_script -R 1 10 30
src/server/emp_server -e sandbox/etc/empire/econfig -R 1
while src/client/empire red herring 2>&1 | grep -q "Connection refused"
do : # FIXME hangs here if server crashes on startup
done
pid=`cat sandbox/var/empire/server.pid`
src/client/empire POGO peter <sandbox/newcap_script >/dev/null
# Feed player input
need_update=
for i in "$srcdir"/tests/smoke/[0-9]*
do
t="${i##*/}"
if [ "$need_update" ]
then
echo "Update Turn $t starting" >&3
src/client/empire POGO peter <<EOF >&3
power new
report *
cen * ?own#0
comm * ?own#0
reso * ?own#0
force
EOF
echo "Update Turn $t completed successfully" >&3
fi
for j in "$i"/*
do
p="${j##*/}"
echo "Player $p Turn $t starting" >&3
if [ $p -eq 0 ]
then c=POGO r=peter
else c="${p#0}"; r="$c"
fi
sed '1,3d;$d' <$j | src/client/empire "$c" "$r" >&3
echo "Player $p Turn $t completed successfully" >&3
done
need_update=y
done
# Stop server
kill "$pid"
while kill -0 "$pid" 2>/dev/null
do : # FIXME hangs here if server fails to exit
done
exec 3>&-
# Smoke test completed; compare results
cmp_out()
{
local opt exp act nrm msg ret=0
for i
do
case "$i" in
*/journal.log) opt=-j ;;
*/server.log) opt=-s ;;
*) opt= ;;
esac
exp="$srcdir/tests/smoke/${i##*/}"
act="sandbox/$i"
nrm="sandbox/normalized-${i##*/}"
perl "$srcdir"/tests/normalize.pl $opt "$act" >"$nrm"
if msg=`diff -q "$exp" "$nrm"`
then
echo "$exp OK"
else
ret=$?
echo "$exp FAIL"
echo $msg
fi
done
return $ret
}
cmp_out smoke.out var/empire/server.log var/empire/journal.log

0
src/scripts/nightly/tests/00/00 → tests/smoke/00/00 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/01 → tests/smoke/00/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/02 → tests/smoke/00/02 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/03 → tests/smoke/00/03 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/04 → tests/smoke/00/04 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/05 → tests/smoke/00/05 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/06 → tests/smoke/00/06 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/07 → tests/smoke/00/07 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/08 → tests/smoke/00/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/09 → tests/smoke/00/09 Executable file → Normal file
View file

0
src/scripts/nightly/tests/00/10 → tests/smoke/00/10 Executable file → Normal file
View file

0
src/scripts/nightly/tests/01/01 → tests/smoke/01/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/02/01 → tests/smoke/02/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/03/01 → tests/smoke/03/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/03/08 → tests/smoke/03/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/04/01 → tests/smoke/04/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/04/08 → tests/smoke/04/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/05/01 → tests/smoke/05/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/06/01 → tests/smoke/06/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/06/08 → tests/smoke/06/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/07/01 → tests/smoke/07/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/07/08 → tests/smoke/07/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/08/01 → tests/smoke/08/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/08/08 → tests/smoke/08/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/09/01 → tests/smoke/09/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/09/08 → tests/smoke/09/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/10/01 → tests/smoke/10/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/10/08 → tests/smoke/10/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/11/01 → tests/smoke/11/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/11/08 → tests/smoke/11/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/12/01 → tests/smoke/12/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/12/08 → tests/smoke/12/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/13/01 → tests/smoke/13/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/13/02 → tests/smoke/13/02 Executable file → Normal file
View file

0
src/scripts/nightly/tests/13/08 → tests/smoke/13/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/14/01 → tests/smoke/14/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/14/02 → tests/smoke/14/02 Executable file → Normal file
View file

0
src/scripts/nightly/tests/14/08 → tests/smoke/14/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/15/01 → tests/smoke/15/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/15/02 → tests/smoke/15/02 Executable file → Normal file
View file

0
src/scripts/nightly/tests/15/08 → tests/smoke/15/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/16/01 → tests/smoke/16/01 Executable file → Normal file
View file

0
src/scripts/nightly/tests/16/02 → tests/smoke/16/02 Executable file → Normal file
View file

0
src/scripts/nightly/tests/16/08 → tests/smoke/16/08 Executable file → Normal file
View file

0
src/scripts/nightly/tests/99/00 → tests/smoke/99/00 Executable file → Normal file
View file

0
src/scripts/nightly/tests/99/01 → tests/smoke/99/01 Executable file → Normal file
View file

2786
tests/smoke/journal.log Normal file

File diff suppressed because it is too large Load diff

519
tests/smoke/server.log Normal file
View file

@ -0,0 +1,519 @@
Thu Jan 1 00:00:00 1970 ------------------------------------------------------
Thu Jan 1 00:00:00 1970 Empire server (pid 42) started
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #3
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #3
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #3
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #4
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #4
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #4
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #5
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #5
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #5
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #6
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #6
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #6
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #7
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #7
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #7
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #9
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #9
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #9
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #10
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #10
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #10
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 First update since reboot, allocating buffer
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 0 announcements deleted; 0 announcements saved
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #2
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #8
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 Triggering unscheduled update
Thu Jan 1 00:00:00 1970 production update (60 etus)
Thu Jan 1 00:00:00 1970 preparing sectors...
Thu Jan 1 00:00:00 1970 done preparing sectors.
Thu Jan 1 00:00:00 1970 producing for countries...
Thu Jan 1 00:00:00 1970 done producing for countries.
Thu Jan 1 00:00:00 1970 delivering...
Thu Jan 1 00:00:00 1970 done delivering
Thu Jan 1 00:00:00 1970 assembling paths...
Thu Jan 1 00:00:00 1970 done assembling paths 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 exporting...
Thu Jan 1 00:00:00 1970 done exporting
Thu Jan 1 00:00:00 1970 importing...
Thu Jan 1 00:00:00 1970 done importing
Thu Jan 1 00:00:00 1970 Deleting annos older than Thu Jan 1 00:00:00 1970
Thu Jan 1 00:00:00 1970 End update 0.0 user 0.0 system
Thu Jan 1 00:00:00 1970 Update schedule read
Thu Jan 1 00:00:00 1970 No update scheduled
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #0
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 using country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged in as country #1
Thu Jan 1 00:00:00 1970 tester@127.0.0.1 logged out, country #1
Thu Jan 1 00:00:00 1970 Shutdown commencing (cleaning up threads.)
Thu Jan 1 00:00:00 1970 Server shutting down on signal 15

13993
tests/smoke/smoke.out Normal file

File diff suppressed because it is too large Load diff