powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Новый альтернативный Slf4j логгер Бобина
25 сообщений из 320, страница 1 из 13
Новый альтернативный Slf4j логгер Бобина
    #39844881
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

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

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

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

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

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

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

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

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

Надеюсь он вам понравится и станет основным логгером для вас.
Лично мне он нравится намного больше logback и log4j2...
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845020
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasSlf4j логгер «Бобина».

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

BobbinScriptEngine.groovy
Код: java
1.
2.
3.
4.
5.
6.
7.
    SimpleDateFormat dateFormat = new SimpleDateFormat(getDateFormat())

...

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




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


FileDestination.groovy
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    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
    }




Если на время забыть, что файловые дескрипторы утекают в неизвестном направлении, этот код потокобезопасный или нет? не будет такого что логи пишутся куда-то не туда?
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845052
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Андрей!

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

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

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

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

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


авторНужно срочно заявку подавать на включение в реестр российского ПО...
Я хотел принять в этом участие (только в ОАЭ), но немного опоздал с million arab coders initiative :)
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845056
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasНасчёт твоего комметария - simpledateformat только «parse» не потокобезопасный.
Format потокобезопасный в нём, так что норм.
как-то с трудом верится...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    // 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Оно оттестированно на потокобезопасность и довольно давно используется у меня, так что какие-то баги очень маловероятны там.

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

Ну баги видны невооруженным взглядом, то что у вы "не видите" не означает что их нет. Сначала неплохо было бы довести до безошибочной работы, а потом сравнивать производительность.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845059
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasА ведь объективно существующие логгеры это каменный век. Это как использовать в Порше (Spring) сиденья от лады.
Так то можно утверждать, что объективно логгеры вообще не нужны. Достаточно stdout и stderr.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845176
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей,

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

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

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 - например время и т.д.
Код захламляется.
Но Вы не далеки от истины :)
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845193
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартный JUL был неудачен. Если-бы в тело JDK изначально была бы заложена библиотека
по уровню похожая на Log4j старых олдскульных версий 1.2.х то никакие другие логгеры
вообще нафик не впали.

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

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

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


Если быть дотошным - вы не управляете этой памятью. Т.к. тело месседжа всё равно формируется на прикладном
уровне. Поэтому о каком потреблении идёт речь - непонятно. Нужен какой-то тест или демо чтоб показать
что имеется в виду.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845198
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasНо к сути дела.. SimpleDateFormat.format потокобезопасный. Вот тест:

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

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

Так что иди и проверяй очень тщательно.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845201
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо поводу мостов между slf4j и slf4j-your-fucken-impl, я бы хотел сказать что высокопроизводительный
логгер приложению вобщем-то не нужен. Потому-что главная задача приложения - делать
полезную работу. А если у вас весь смысл работы сконцетрирован в быстром логгировании и
то вы либо в TRACE mode, что само по себе - редко. Либо логгер выполняет несвойственные
ему задачи (например шлёт месседжи по JMS или Syslog). Всё это - какие-то архитектурные
просчёты и их надо обсуждать на высшем уровне а не оптимизировать кольцевые бобины и
прочие оверинжинеринги.

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

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

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

Насчёт производительности - к примеру у вашего заказчика клиринговый файл на 250000 записей.
И его загрузчик на определённых данных даёт неправильный расчёт, скажем задвоение комиссии.
Вы просите заказчика включить трейсы и отправить Вам на анализ.
Вот тут возникает проблема с «производительность логгера не важна».
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845203
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytondakeirasНо к сути дела.. SimpleDateFormat.format потокобезопасный. Вот тест:

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

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

Так что иди и проверяй очень тщательно.
Спасибо за совет, друг.

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

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

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

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

И вообще - отбросьте сомнения :) Код полностью оттестирован и отточен. Смело качайте!
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845204
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторThreadLocal<SimpleDateFormat>

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

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

ThreadLocal негативно отображается на эффективности работы GC в контексте веб контейнера, и его нужно избегать по возможности.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845205
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСтандартный JUL был неудачен. Если-бы в тело JDK изначально была бы заложена библиотека
по уровню похожая на Log4j старых олдскульных версий 1.2.х то никакие другие логгеры
вообще нафик не впали.

По какому уровню Log4j? Совершенно не индустриальная библиотека, которая по стечению обстоятельств и отсутствия альтернатив стала популярной.
У неё совершенно упоротая концепция иерархических логгеров - абсолютно не удобная привязка к уровню логирования.
Непонятно почему нельзя было изначально сделать её нормально.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845206
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли быть дотошным - вы не управляете этой памятью. Т.к. тело месседжа всё равно формируется на прикладном
уровне. Поэтому о каком потреблении идёт речь - непонятно. Нужен какой-то тест или демо чтоб показать
что имеется в виду.
это если Root логгер выключен.

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

Я запишу видео сравнение с Logback на примере Веб приложения и выложу на этой неделе.
Спасибо, хорошая идея.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845230
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasЯ вижу что люди с трудом верят Гитхабу (новым проектам), но охотно верят помойке Stackoverflow.

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
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);
	}

}



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
960.
961.
962.
963.
964.
965.
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
999.
1000.
1001.
1002.
1003.
1004.
1005.
1006.
1007.
1008.
1009.
1010.
1011.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
1026.
1027.
1028.
1029.
1030.
1031.
1032.
1033.
1034.
1035.
1036.
1037.
1038.
1039.
1040.
1041.
1042.
1043.
1044.
1045.
1046.
1047.
1048.
1049.
1050.
1051.
1052.
1053.
1054.
1055.
1056.
1057.
1058.
1059.
1060.
1061.
1062.
1063.
1064.
1065.
1066.
1067.
1068.
1069.
1070.
1071.
1072.
1073.
1074.
1075.
1076.
1077.
1078.
1079.
1080.
1081.
1082.
1083.
1084.
1085.
1086.
1087.
1088.
1089.
1090.
1091.
1092.
1093.
1094.
1095.
1096.
1097.
1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.
1109.
1110.
1111.
1112.
1113.
1114.
1115.
1116.
1117.
1118.
1119.
1120.
1121.
1122.
1123.
1124.
1125.
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133.
1134.
1135.
1136.
1137.
1138.
1139.
1140.
1141.
1142.
1143.
1144.
1145.
1146.
1147.
1148.
1149.
1150.
1151.
1152.
1153.
1154.
1155.
1156.
1157.
1158.
1159.
1160.
1161.
1162.
1163.
1164.
1165.
1166.
1167.
1168.
1169.
1170.
1171.
1172.
1173.
1174.
1175.
1176.
1177.
1178.
1179.
1180.
1181.
1182.
1183.
1184.
1185.
1186.
1187.
1188.
1189.
1190.
1191.
1192.
1193.
1194.
1195.
1196.
1197.
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205.
1206.
1207.
1208.
1209.
1210.
1211.
1212.
1213.
1214.
1215.
1216.
1217.
1218.
1219.
1220.
1221.
1222.
1223.
1224.
1225.
1226.
1227.
1228.
1229.
1230.
1231.
1232.
1233.
1234.
1235.
1236.
1237.
1238.
1239.
1240.
1241.
1242.
1243.
1244.
1245.
1246.
1247.
1248.
1249.
1250.
1251.
1252.
1253.
1254.
1255.
1256.
1257.
1258.
1259.
1260.
1261.
1262.
1263.
1264.
1265.
1266.
1267.
1268.
1269.
1270.
1271.
1272.
1273.
1274.
1275.
1276.
1277.
1278.
1279.
1280.
1281.
1282.
1283.
1284.
1285.
1286.
1287.
1288.
1289.
1290.
1291.
1292.
1293.
1294.
1295.
1296.
1297.
1298.
1299.
1300.
1301.
1302.
1303.
1304.
1305.
1306.
1307.
1308.
1309.
1310.
1311.
1312.
1313.
1314.
1315.
1316.
1317.
1318.
1319.
1320.
1321.
1322.
1323.
1324.
1325.
1326.
1327.
1328.
1329.
1330.
1331.
1332.
1333.
1334.
1335.
1336.
1337.
1338.
1339.
1340.
1341.
1342.
1343.
1344.
1345.
1346.
1347.
1348.
1349.
1350.
1351.
1352.
1353.
1354.
1355.
1356.
1357.
1358.
1359.
1360.
1361.
1362.
1363.
1364.
1365.
1366.
1367.
1368.
1369.
1370.
1371.
1372.
1373.
1374.
1375.
1376.
1377.
1378.
1379.
1380.
1381.
1382.
1383.
1384.
1385.
1386.
1387.
1388.
1389.
1390.
1391.
1392.
1393.
1394.
1395.
1396.
1397.
1398.
1399.
1400.
1401.
1402.
1403.
1404.
1405.
1406.
1407.
1408.
1409.
1410.
1411.
1412.
1413.
1414.
1415.
1416.
1417.
1418.
1419.
1420.
1421.
1422.
1423.
1424.
1425.
1426.
1427.
1428.
1429.
1430.
1431.
1432.
1433.
1434.
1435.
1436.
1437.
1438.
1439.
1440.
1441.
1442.
1443.
1444.
1445.
1446.
1447.
1448.
1449.
1450.
1451.
1452.
1453.
1454.
1455.
1456.
1457.
1458.
1459.
1460.
1461.
1462.
1463.
1464.
1465.
1466.
1467.
1468.
1469.
1470.
1471.
1472.
1473.
1474.
1475.
1476.
1477.
1478.
1479.
1480.
1481.
1482.
1483.
1484.
1485.
1486.
1487.
1488.
1489.
1490.
1491.
1492.
1493.
1494.
1495.
1496.
1497.
1498.
1499.
1500.
1501.
1502.
1503.
1504.
1505.
1506.
1507.
1508.
1509.
1510.
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$ (там еще файловые дескрипторы текут и запись не в те файлы происходит)
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845300
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классический сет реализаций таких как LogBack, Log4j2 e.t.c написан на Java.

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

Автор, как ты делал бенчмарк?
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845405
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

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

andrey.b.panfilov - gmail.com?

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

PS: баг с SimpleDateFormat очень маленький - там различие в 5-10 миллисикунд возникает в логе. Поэтому незаметно.
Но это не хорошо. Я поправлю.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845406
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКлассический сет реализаций таких как LogBack, Log4j2 e.t.c написан на Java.

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

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

Groovy там со статической компиляцией. Т.е. таже самая Java.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845410
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей, в Груви файлы не надо закрывать, он сам их закрывает. Ты про это говорил?
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845412
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasmaytonКлассический сет реализаций таких как LogBack, Log4j2 e.t.c написан на Java.

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

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

Groovy там со статической компиляцией. Т.е. таже самая Java.
Тоесть это и есть ответ на вопрос о бенчмарке?
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845419
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasАндрей, в Груви файлы не надо закрывать, он сам их закрывает. Ты про это говорил?
Лол, то есть все настолько плохо со знаниями? За попытку конечно 5, но тут же не лохи сидят
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845420
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytondakeirasпропущено...


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).
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845422
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

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

Это типичный современный Российский подход.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845433
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeirasзабыл ник,

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

Это типичный современный Российский подход.
Во-первых я не из России, во-вторых мы на форуме а не на маркетинг-вечеринке, а в-третьих чрезмерная самонадеянность чревата. Одно дело вбросить свою либу и спросить - мол, как оно ребята? Другое дело оголтело втюхивать свою поделку выдавая ее за край передовой мысли.
Попытка сделать что-то новое это хорошо, тут никто и не пытается наехать. А вот то что вы понятия не имеете как писать потокобезопасный код, работать с файлами, писать тесты и мерить перфоманс то тут вы попались с головой, и что вы так удивляетесь негативному фидбэку?
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845442
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей,

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

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

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

забыл ник,

где конкретно я попался что не умею писать потокобезопасный код?
Есть minor баг с SimpleDateFormat, который выражается тем что миллисикунды не всегда правильно в файлах пишутся.
...
Рейтинг: 0 / 0
Новый альтернативный Slf4j логгер Бобина
    #39845446
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В версии 1.x файлы закрывались и архивировались:

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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    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()
        }
    }



Я убрал архивирование, т.к. концептуально это не задача логгера.
Наверное надо вернуть закрытие файлов, когда они точно становятся неиспользуемыми (например при смене даты).
...
Рейтинг: 0 / 0
25 сообщений из 320, страница 1 из 13
Форумы / Java [игнор отключен] [закрыт для гостей] / Новый альтернативный Slf4j логгер Бобина
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]