package org.ovirt.engine.core.utils.ovf; import java.util.Date; import org.junit.Assert; import org.junit.Test; import org.ovirt.engine.core.compat.RefObject; public class OvfParserTest { @Test public void UtcDateStringToLocaDate() { RefObject<Date> ref = new RefObject<Date>(null); OvfParser.UtcDateStringToLocaDate("1984/06/19 14:25:11", ref); Assert.assertEquals(456503111000l, ref.argvalue.getTime()); } static class Checker implements Runnable { public Checker(String dateStr, long dateVal, long count) { super(); this.dateStr = dateStr; this.dateVal = dateVal; this.count = count; } final String dateStr; final long dateVal; final long count; long errors; @Override public void run() { RefObject<Date> ref = new RefObject<Date>(null); for (long l = 0; l < count; l++) { OvfParser.UtcDateStringToLocaDate(dateStr, ref); if (dateVal != ref.argvalue.getTime()) { errors++; } } } } @Test public void UtcDateStringToLocaDateMultiThread() throws InterruptedException { final Thread[] threads = new Thread[8]; final Checker[] checkers = new Checker[threads.length]; for (int i = 0; i < threads.length; i++) { checkers[i] = new Checker("1984/06/19 14:25:11", 456503111000l, 100000); threads[i] = new Thread(checkers[i], "ovf-checker-" + i); threads[i].start(); } for (Thread thread : threads) { thread.join(); } for (Checker checker : checkers) { Assert.assertEquals(checker.errors, 0); } } }