Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 11   вперед  Ctrl      все
 Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
Приветствую!

4 года не был на сайте.

Хочу порекламировать свой Опер Сорс.
Если запрещено - сливайте плиз.

Итак, я тут замутил не много ни мало целый опен сорс фонд.
За пару лет был разработан целый стек новых инструментов, и один из них хочу представить сегодня Вам.

Slf4j логгер «Бобина».

Отличается:
- адской скоростью и маленьким потреблением памяти
- легкой и простой настройкой (в отличии от невменяемых настроек других логгеров)
- умеет писать одновременно сотни лог файлов
- легко (настраивается) пишет отдельные логи на каждый поток

Также работает отлично со Спрингом.

Есть полная документация на него в Вики.

https://github.com/INFINITE-TECHNOLOGY/BOBBIN

Надеюсь он вам понравится и станет основным логгером для вас.
Лично мне он нравится намного больше logback и log4j2...
3 авг 19, 02:01    [21941068]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3381
dakeiras
Slf4j логгер «Бобина».

Отличается:
- адской скоростью и маленьким потреблением памяти
- легкой и простой настройкой (в отличии от невменяемых настроек других логгеров)
- умеет писать одновременно сотни лог файлов
- легко (настраивается) пишет отдельные логи на каждый поток
Нужно срочно заявку подавать на включение в реестр российского ПО...

BobbinScriptEngine.groovy
    SimpleDateFormat dateFormat = new SimpleDateFormat(getDateFormat())

...

    String getDate() {
        return dateFormat.format(new Date())
    }



Не смущает что SimpleDateFormat нифига не потокобезопасный?


FileDestination.groovy
    BobbinFile currentBobbinFile
....

    @Override
    protected void store(String finalOutputMessageText, Level level, String className, String date) {
        String newFileName = bobbinScriptEngine.evalFileName(level.value(), className, date)
        refreshCurrentFile(newFileName)
        currentBobbinFile.writer.write(finalOutputMessageText)
        currentBobbinFile.writer.flush()
    }

    void refreshCurrentFile(String newFileName) {
        if (currentBobbinFile == null) {
            currentBobbinFile = initFile(newFileName)
        } else {
            if (currentBobbinFile.fileName != newFileName) {
                currentBobbinFile = initFile(newFileName)
            }
        }
    }

    BobbinFile initFile(String fileName) {
        BobbinFile file = new BobbinFile(fileName)
        file.fileName = fileName
        file.getParentFile().mkdirs()
        file.writer = new FileWriter(file, true)
        return file
    }



Если на время забыть, что файловые дескрипторы утекают в неизвестном направлении, этот код потокобезопасный или нет? не будет такого что логи пишутся куда-то не туда?
4 авг 19, 05:17    [21941436]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
Привет Андрей!

Спасибо что посмотрел этот логгер и прокомментировал.

Я уже начал сдаваться, кажется что никому такие вещи не интересны.
А ведь объективно существующие логгеры это каменный век. Это как использовать в Порше (Spring) сиденья от лады.

Насчёт твоего комметария - simpledateformat только «parse» не потокобезопасный.
Format потокобезопасный в нём, так что норм.

Оно оттестированно на потокобезопасность и довольно давно используется у меня, так что какие-то баги очень маловероятны там.

Этот логгер в первую очередь ориентирован на многопоточные среды с сотнями одновременных потоков. Всё продуманно и проверенно много раз. За каждой кажущейся простотой здесь всегда стоит рефакторинг.


автор
Нужно срочно заявку подавать на включение в реестр российского ПО...

Я хотел принять в этом участие (только в ОАЭ), но немного опоздал с million arab coders initiative :)
4 авг 19, 12:32    [21941508]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3381
dakeiras
Насчёт твоего комметария - simpledateformat только «parse» не потокобезопасный.
Format потокобезопасный в нём, так что норм.

как-то с трудом верится...

    // Called from Format after creating a FieldDelegate
    private StringBuffer format(Date date, StringBuffer toAppendTo,
                                FieldDelegate delegate) {
        // Convert input date to time field list
        calendar.setTime(date);

    /**
     * Private member function that does the real date/time formatting.
     */
    private void subFormat(int patternCharIndex, int count,
                           FieldDelegate delegate, StringBuffer buffer,
                           boolean useDateFormatSymbols)
    {
        int     maxIntCount = Integer.MAX_VALUE;
        String  current = null;
        int     beginOffset = buffer.length();

        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
        int value;
        if (field == CalendarBuilder.WEEK_YEAR) {
            if (calendar.isWeekDateSupported()) {
                value = calendar.getWeekYear();
            } else {
                // use calendar year 'y' instead
                patternCharIndex = PATTERN_YEAR;
                field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
                value = calendar.get(field);
            }
        } else if (field == CalendarBuilder.ISO_DAY_OF_WEEK) {
            value = CalendarBuilder.toISODayOfWeek(calendar.get(Calendar.DAY_OF_WEEK));
        } else {
            value = calendar.get(field);
        }


dakeiras
Оно оттестированно на потокобезопасность и довольно давно используется у меня, так что какие-то баги очень маловероятны там.

Этот логгер в первую очередь ориентирован на многопоточные среды с сотнями одновременных потоков. Всё продуманно и проверенно много раз. За каждой кажущейся простотой здесь всегда стоит рефакторинг.


Ну баги видны невооруженным взглядом, то что у вы "не видите" не означает что их нет. Сначала неплохо было бы довести до безошибочной работы, а потом сравнивать производительность.
4 авг 19, 13:12    [21941513]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2773
dakeiras
А ведь объективно существующие логгеры это каменный век. Это как использовать в Порше (Spring) сиденья от лады.

Так то можно утверждать, что объективно логгеры вообще не нужны. Достаточно stdout и stderr.
4 авг 19, 13:25    [21941518]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
Андрей,

Я вижу что люди с трудом верят Гитхабу (новым проектам), но охотно верят помойке Stackoverflow.

Всё это проверялось и оттачивалось несколько лет, а сам логгер концептуально ведёт историю около 10ти лет.
Это наукоёмкая разработка на самом деле, и инновационная.

Но к сути дела.. SimpleDateFormat.format потокобезопасный. Вот тест:

import java.text.SimpleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")
Thread.start {
for (i in 1..10000) {
System.out.println("Thread 1: " + simpleDateFormat.format(new Date()))
}
}
Thread.start {
for (i in 1..10000) {
System.out.println("Thread 2: " + simpleDateFormat.format(new Date()))
}
}


Далее - за каждый найденный баг я плачу 20$ (максимум 100$ общая сумма на всех - т.е. 5 багов, я всё таки не рокфеллер).
Я знаю только 1 маленький баг с выводом в stdout вместо stderr - но он не влияет ни на что на самом деле.

Пользуйтесь этим логгерром, надеюсь он понравится Вам больше чем старьё то что есть.

автор
Так то можно утверждать, что объективно логгеры вообще не нужны. Достаточно stdout и stderr.

Не совсем согласен. Нужно слишком много доп. параметров вручную передавать в Stdout - например время и т.д.
Код захламляется.
Но Вы не далеки от истины :)
4 авг 19, 19:28    [21941680]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 43411
Стандартный JUL был неудачен. Если-бы в тело JDK изначально была бы заложена библиотека
по уровню похожая на Log4j старых олдскульных версий 1.2.х то никакие другие логгеры
вообще нафик не впали.

По поводу мостов между slf4j и slf4j-your-fucken-impl, я бы хотел сказать что высокопроизводительный
логгер приложению вобщем-то не нужен. Потому-что главная задача приложения - делать
полезную работу. А если у вас весь смысл работы сконцетрирован в быстром логгировании и
то вы либо в TRACE mode, что само по себе - редко. Либо логгер выполняет несвойственные
ему задачи (например шлёт месседжи по JMS или Syslog). Всё это - какие-то архитектурные
просчёты и их надо обсуждать на высшем уровне а не оптимизировать кольцевые бобины и
прочие оверинжинеринги.

Если кто-то очень хочет логгированием вести учот статистики к примеру то тут есть JMX и Atomic счетчики и прочие
надстройки которые делают эти задачи эффективнее.

По поводу
- адской скоростью и маленьким потреблением памяти

Если быть дотошным - вы не управляете этой памятью. Т.к. тело месседжа всё равно формируется на прикладном
уровне. Поэтому о каком потреблении идёт речь - непонятно. Нужен какой-то тест или демо чтоб показать
что имеется в виду.
4 авг 19, 21:57    [21941721]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 43411
dakeiras
Но к сути дела.. SimpleDateFormat.format потокобезопасный. Вот тест:

Дружище. Твой тест внутри содержит искусственную задержки. Это вывод на экран.
Я думаю что тебе стоит убрать этот вывод. Создать хотяб-ы 1000 потоков и проверить
гипотезу о том что содержимое ::parse() и ::format() дало взаимное тождество. И конечно
не на константе а на спектре разных дат.

Очень странно что ты не наступал на дефект SimpleDateFormat. Он действительно
был потоко-небезопасный в семерке. Его все нормальные люди оборачивали
ThreadLocal<SimpleDateFormat>.

Так что иди и проверяй очень тщательно.
4 авг 19, 22:15    [21941729]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
автор
По поводу мостов между slf4j и slf4j-your-fucken-impl, я бы хотел сказать что высокопроизводительный
логгер приложению вобщем-то не нужен. Потому-что главная задача приложения - делать
полезную работу. А если у вас весь смысл работы сконцетрирован в быстром логгировании и
то вы либо в TRACE mode, что само по себе - редко. Либо логгер выполняет несвойственные
ему задачи (например шлёт месседжи по JMS или Syslog). Всё это - какие-то архитектурные
просчёты и их надо обсуждать на высшем уровне а не оптимизировать кольцевые бобины и
прочие оверинжинеринги.


Про Syslog это Вы в моих тредах за 2013 год прочитали?
https://www.sql.ru/forum/1028371/syslog-rfc5424

Так я собственно и сказал там что Syslog к логгеру никак не относится.

Кстати к вопросу о несвойственности - в Slf4j есть «маркеры» - бизнес функционал чистый.
В «Бобине» это конечно выключено и не поддерживается.

Насчёт производительности - к примеру у вашего заказчика клиринговый файл на 250000 записей.
И его загрузчик на определённых данных даёт неправильный расчёт, скажем задвоение комиссии.
Вы просите заказчика включить трейсы и отправить Вам на анализ.
Вот тут возникает проблема с «производительность логгера не важна».
4 авг 19, 22:51    [21941742]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
mayton
dakeiras
Но к сути дела.. SimpleDateFormat.format потокобезопасный. Вот тест:

Дружище. Твой тест внутри содержит искусственную задержки. Это вывод на экран.
Я думаю что тебе стоит убрать этот вывод. Создать хотяб-ы 1000 потоков и проверить
гипотезу о том что содержимое ::parse() и ::format() дало взаимное тождество. И конечно
не на константе а на спектре разных дат.

Очень странно что ты не наступал на дефект SimpleDateFormat. Он действительно
был потоко-небезопасный в семерке. Его все нормальные люди оборачивали
ThreadLocal<SimpleDateFormat>.

Так что иди и проверяй очень тщательно.

Спасибо за совет, друг.

Есть хорошие новости:

Всё проверено.
С задержками, и без, на 10000000 записей (без шуток).

SimpleDateFormat.format потокобезопасен 100%,
Вызывает проблемы “parse”.

Насчёт задержек это всё очевидные вещи. Естественно я это учёл, и делал разные тесты.
Как учёл и оптимизацию Javac и JRE - принудительно обращался к инициализированным переменным чтобы избежать пропуска неиспользуемого кода для их инициализации.

И вообще - отбросьте сомнения :) Код полностью оттестирован и отточен. Смело качайте!
4 авг 19, 22:59    [21941744]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
автор
ThreadLocal<SimpleDateFormat>


Это всё проходилось, и даже в Бобине, и было выпилено.

На благо пользователей.

ThreadLocal негативно отображается на эффективности работы GC в контексте веб контейнера, и его нужно избегать по возможности.
4 авг 19, 23:04    [21941745]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
автор
Стандартный JUL был неудачен. Если-бы в тело JDK изначально была бы заложена библиотека
по уровню похожая на Log4j старых олдскульных версий 1.2.х то никакие другие логгеры
вообще нафик не впали.


По какому уровню Log4j? Совершенно не индустриальная библиотека, которая по стечению обстоятельств и отсутствия альтернатив стала популярной.
У неё совершенно упоротая концепция иерархических логгеров - абсолютно не удобная привязка к уровню логирования.
Непонятно почему нельзя было изначально сделать её нормально.
4 авг 19, 23:08    [21941746]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
автор
Если быть дотошным - вы не управляете этой памятью. Т.к. тело месседжа всё равно формируется на прикладном
уровне. Поэтому о каком потреблении идёт речь - непонятно. Нужен какой-то тест или демо чтоб показать
что имеется в виду.

это если Root логгер выключен.

Как только проходит чуть дальше сообщение - всё, логгер начинает работать и потреблять Java Heap. И тут уже начинает играть роль оптимизация логгера по потреблению памяти.
А также по обеспечению эффективности GC, т.н. memory footprint.

Я запишу видео сравнение с Logback на примере Веб приложения и выложу на этой неделе.
Спасибо, хорошая идея.
4 авг 19, 23:14    [21941747]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3381
dakeiras
Я вижу что люди с трудом верят Гитхабу (новым проектам), но охотно верят помойке Stackoverflow.

Всё это проверялось и оттачивалось несколько лет, а сам логгер концептуально ведёт историю около 10ти лет.
Это наукоёмкая разработка на самом деле, и инновационная.
А причем тут стэковерфлоу вообще? Есть код SimpleDateFormat, по коду оно в одном месте пишет в поле protected Calendar calendar, в другом месте оно ожидает прочесть записанные данные, соответственно если пишем из разных потоков, то выходит, что читаем уже мусор - это обычный code review, тут даже никакие тесты не нужны. Ну а если вы не можете правильный тест составить - это уже ваши проблемы, а не ревьювера, вот пример из https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4228335

+
import java.text.DateFormat;
import java.util.Date;

/**
 * Demonstrate that java.text.SimpleDateFormat is not thread-safe.
 *
 * @author <a href="mailto:###@###.###">Kevin J. Butler</a>
 * @version $Revision: 22$
 */
public class TestDateFormat {

	public static boolean stopping = false;

	static class Tester extends Thread {

		DateFormat dateFormat;

		Date date;

		String expected;

		int failures = 0;

		public Tester(String name, DateFormat df, Date d) {
			super(name);
			this.dateFormat = df;
			this.date = d;
			this.expected = df.format(d);
		}

		public void run() {
			while (!stopping) {
				String newText = dateFormat.format(date);
				if (!newText.equals(expected)) {
					failures++;
					System.err.println(
							Thread.currentThread() + " got " + newText +
									", expected " + expected
					);
				}
			}
		}

	}

	public static boolean testDateFormat(
			DateFormat dateFormat
	) {
		Date d1 = new Date(0);
		Date d2 = new Date();

		Tester t1 = new Tester("Tester1", dateFormat, d1);
		Tester t2 = new Tester("Tester2", dateFormat, d2);

		t1.start();
		t2.start();
		try {
			Thread.sleep(5000);
			stopping = true;
			t1.join();
			t2.join();
		} catch (InterruptedException ex) {
		}
		System.err.println("Thread1.failures = " + t1.failures +
				" Thread2.failures = " + t2.failures
		);
		return t1.failures == 0 && t2.failures == 0;
	}

	public static void main(String[] args) {
		DateFormat dateFormat = DateFormat.getDateInstance();
		System.out.println("Testing with DateFormat object");
		testDateFormat(dateFormat);
	}

}



Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Testing with DateFormat object
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/01/1970, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/01/1970, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/1970, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 01/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester2,5,main] got 01/01/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 05/08/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Thread[Tester1,5,main] got 01/01/2019, expected 01/01/1970
Thread[Tester2,5,main] got 05/08/1970, expected 05/08/2019
Exception in thread "Tester1" java.lang.ArrayIndexOutOfBoundsException: 593
at sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:453)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2397)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2312)
at java.util.Calendar.complete(Calendar.java:2268)
at java.util.Calendar.get(Calendar.java:1826)
at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1119)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
at java.text.DateFormat.format(DateFormat.java:345)
at TestDateFormat$Tester.run(TestDateFormat.java:37)
Thread1.failures = 622 Thread2.failures = 873

Process finished with exit code 0


dakeiras
Далее - за каждый найденный баг я плачу 20$ (максимум 100$ общая сумма на всех - т.е. 5 багов, я всё таки не рокфеллер).
Я знаю только 1 маленький баг с выводом в stdout вместо stderr - но он не влияет ни на что на самом деле.


Перечисляйте на палку andrey.b.panfilov 60$ (там еще файловые дескрипторы текут и запись не в те файлы происходит)
5 авг 19, 06:31    [21941782]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 43411
Классический сет реализаций таких как LogBack, Log4j2 e.t.c написан на Java.

Наш Робин-Бобин написан на Groovy. И есть у меня теперь сомнения в том
что "адская скорость" имеет место.

Автор, как ты делал бенчмарк?
5 авг 19, 10:14    [21941905]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
Андрей Панфилов,

Ок, хороший баг нашёл, спасибо.

andrey.b.panfilov - gmail.com?

Напиши пожалуйста детали других багов.

PS: баг с SimpleDateFormat очень маленький - там различие в 5-10 миллисикунд возникает в логе. Поэтому незаметно.
Но это не хорошо. Я поправлю.
5 авг 19, 14:42    [21942108]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
mayton
Классический сет реализаций таких как LogBack, Log4j2 e.t.c написан на Java.

Наш Робин-Бобин написан на Groovy. И есть у меня теперь сомнения в том
что "адская скорость" имеет место.

Автор, как ты делал бенчмарк?


Groovy там со статической компиляцией. Т.е. таже самая Java.
5 авг 19, 14:43    [21942109]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
Андрей, в Груви файлы не надо закрывать, он сам их закрывает. Ты про это говорил?
5 авг 19, 14:57    [21942118]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
mayton
Member

Откуда: loopback
Сообщений: 43411
dakeiras
mayton
Классический сет реализаций таких как LogBack, Log4j2 e.t.c написан на Java.

Наш Робин-Бобин написан на Groovy. И есть у меня теперь сомнения в том
что "адская скорость" имеет место.

Автор, как ты делал бенчмарк?


Groovy там со статической компиляцией. Т.е. таже самая Java.

Тоесть это и есть ответ на вопрос о бенчмарке?
5 авг 19, 15:04    [21942125]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
забыл ник
Member

Откуда:
Сообщений: 3080
dakeiras
Андрей, в Груви файлы не надо закрывать, он сам их закрывает. Ты про это говорил?

Лол, то есть все настолько плохо со знаниями? За попытку конечно 5, но тут же не лохи сидят
5 авг 19, 15:16    [21942142]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
mayton
dakeiras
пропущено...


Groovy там со статической компиляцией. Т.е. таже самая Java.

Тоесть это и есть ответ на вопрос о бенчмарке?


Делать бенчмарки задачи как таковой не стояло - т.к. нет задачи обосрать конкурентов (я могу высказывать своё недовольство другими библиотеками, но бенчмарком сравнивать 2 опен сорс библиотеки - это слишком).

Была задача максимально оптимизировать Бобину.

— Тестовый стенд представляет собой гибридное Spring Boot приложение, имеющее около 150 постоянных потоков, как синхронизированных, так и постоянно работающих в фоне.
Он использует JPA, Hibernate, Groovy, REST. Стенд нагружался, влючалось логирование SQL и binding в JPA/Hibernate. Ну и самое главное — стенд использовал библиотеку Blackbox, которая логирует буквально каждый expression в коде бизнес логики. Т.е. вывод примерно 25Мб/с логов. Около 400 одновременно записываемых файлов.

Дальше с Java Visual VM. Анализировалось потребление CPU и особенно памяти и эффективности GC.

Анализировались Heap Dumps, профайлер и разные статистики.

С Бобиной приложение работало ощутимо намного быстрее и меньше потребляло памяти. Конкретных замеров я не делал и не знаю, этично ли это делать лично мне как автору по отношению к другим Опен Сорс разработчикам (Logback).
5 авг 19, 15:17    [21942143]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
забыл ник,

вообще отлично. Давайте на личности переходить, оскорблять.

Это типичный современный Российский подход.
5 авг 19, 15:20    [21942149]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
забыл ник
Member

Откуда:
Сообщений: 3080
dakeiras
забыл ник,

вообще отлично. Давайте на личности переходить, оскорблять.

Это типичный современный Российский подход.

Во-первых я не из России, во-вторых мы на форуме а не на маркетинг-вечеринке, а в-третьих чрезмерная самонадеянность чревата. Одно дело вбросить свою либу и спросить - мол, как оно ребята? Другое дело оголтело втюхивать свою поделку выдавая ее за край передовой мысли.
Попытка сделать что-то новое это хорошо, тут никто и не пытается наехать. А вот то что вы понятия не имеете как писать потокобезопасный код, работать с файлами, писать тесты и мерить перфоманс то тут вы попались с головой, и что вы так удивляетесь негативному фидбэку?
5 авг 19, 15:28    [21942164]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
Андрей,

Я кажется понял твою идею насчёт закрытия файлов. Можно словить too many open files, да?

Надо подумать как закрывать их оптимально, возможно сделаю настраивамый expression "isNeedToCloseFile".
Если закрывать\открывать каждый раз - это будет тормозить.

Это было осмысленное решение не закрывать их.

забыл ник,

где конкретно я попался что не умею писать потокобезопасный код?
Есть minor баг с SimpleDateFormat, который выражается тем что миллисикунды не всегда правильно в файлах пишутся.
5 авг 19, 15:48    [21942183]     Ответить | Цитировать Сообщить модератору
 Re: Новый альтернативный Slf4j логгер Бобина  [new]
dakeiras
Member

Откуда:
Сообщений: 295
В версии 1.x файлы закрывались и архивировались:

https://github.com/INFINITE-TECHNOLOGY/BOBBIN/blob/ca0fb4d1a5966e7dbe0471be67234422f55c49bc/src/main/groovy/io/infinite/bobbin/destinations/FileDestination.groovy#L79

    static void zipAndDelete(File file) {
        final Integer BUFFER_LENGTH = 2048
        if (file.isFile()) {
            new File(file.zipFileName as String).getParentFile().mkdirs()
            FileOutputStream fileOutputStream = new FileOutputStream(file.zipFileName as String)
            ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(fileOutputStream))
            byte[] bytes = new byte[BUFFER_LENGTH]
            FileInputStream fileInputStream = new FileInputStream(file)
            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream, BUFFER_LENGTH)
            ZipEntry entry = new ZipEntry(file.getName())
            zipOutputStream.putNextEntry(entry)
            Integer countBytes
            while ((countBytes = bufferedInputStream.read(bytes, 0, BUFFER_LENGTH)) != -1) {
                zipOutputStream.write(bytes, 0, countBytes)
            }
            bufferedInputStream.close()
            zipOutputStream.close()
            file.delete()
        }
    }


Я убрал архивирование, т.к. концептуально это не задача логгера.
Наверное надо вернуть закрытие файлов, когда они точно становятся неиспользуемыми (например при смене даты).
5 авг 19, 15:53    [21942189]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 11   вперед  Ctrl      все
Все форумы / Java Ответить