From b47d450ddb44d4aeaff175014e638fd4b7c37f27 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Tue, 23 Dec 2014 11:29:36 -0800 Subject: [PATCH] Fixed RunIdMigratorTest failures in non-EST time zone RunIdMigrator.LEGACY_ID_FORMATTER was static, which gets instantiated before the time zone is overriden during the test. Changing this to an instance field so that it gets created later on. --- .../main/java/jenkins/model/RunIdMigrator.java | 16 ++++++++-------- .../java/jenkins/model/RunIdMigratorTest.java | 5 +++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/jenkins/model/RunIdMigrator.java b/core/src/main/java/jenkins/model/RunIdMigrator.java index 4097fdea0f..9bd7c7ba9f 100644 --- a/core/src/main/java/jenkins/model/RunIdMigrator.java +++ b/core/src/main/java/jenkins/model/RunIdMigrator.java @@ -60,7 +60,6 @@ import org.apache.commons.lang.time.FastDateFormat; import org.apache.tools.ant.BuildException; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; -import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.StaplerProxy; import org.kohsuke.stapler.framework.io.WriterOutputStream; @@ -76,8 +75,9 @@ import static java.util.logging.Level.*; @Restricted(NoExternalUse.class) public final class RunIdMigrator { + private final DateFormat legacyIdFormatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); + static final Logger LOGGER = Logger.getLogger(RunIdMigrator.class.getName()); - private static final DateFormat LEGACY_ID_FORMATTER = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); private static final String MAP_FILE = "legacyIds"; /** avoids wasting a map for new jobs */ private static final Map EMPTY = new TreeMap(); @@ -235,8 +235,8 @@ public final class RunIdMigrator { } long timestamp; try { - synchronized (LEGACY_ID_FORMATTER) { - timestamp = LEGACY_ID_FORMATTER.parse(name).getTime(); + synchronized (legacyIdFormatter) { + timestamp = legacyIdFormatter.parse(name).getTime(); } } catch (ParseException x) { LOGGER.log(WARNING, "found unexpected dir {0}", name); @@ -304,9 +304,9 @@ public final class RunIdMigrator { if (!jobs.isDirectory()) { throw new FileNotFoundException("no such $JENKINS_HOME " + root); } - unmigrateJobsDir(jobs); + new RunIdMigrator().unmigrateJobsDir(jobs); } - private static void unmigrateJobsDir(File jobs) throws Exception { + private void unmigrateJobsDir(File jobs) throws Exception { for (File job : jobs.listFiles()) { File[] kids = job.listFiles(); if (kids == null) { @@ -328,7 +328,7 @@ public final class RunIdMigrator { private static final Pattern ID_ELT = Pattern.compile("(?m)^ ([0-9_-]+)(\r?\n)"); private static final Pattern TIMESTAMP_ELT = Pattern.compile("(?m)^ (\\d+)(\r?\n)"); /** Inverse of {@link #doMigrate}. */ - private static void unmigrateBuildsDir(File builds) throws Exception { + private void unmigrateBuildsDir(File builds) throws Exception { File mapFile = new File(builds, MAP_FILE); if (!mapFile.isFile()) { System.err.println(builds + " does not look to have been migrated yet; skipping"); @@ -362,7 +362,7 @@ public final class RunIdMigrator { xml = m.replaceFirst(""); } else { // Post-migration build. We give it a new ID based on its timestamp. - id = LEGACY_ID_FORMATTER.format(new Date(timestamp)); + id = legacyIdFormatter.format(new Date(timestamp)); } FileUtils.write(buildXml, xml, Charsets.UTF_8); if (!build.renameTo(new File(builds, id))) { diff --git a/core/src/test/java/jenkins/model/RunIdMigratorTest.java b/core/src/test/java/jenkins/model/RunIdMigratorTest.java index 17241b151c..ff4824ac93 100644 --- a/core/src/test/java/jenkins/model/RunIdMigratorTest.java +++ b/core/src/test/java/jenkins/model/RunIdMigratorTest.java @@ -28,6 +28,7 @@ import hudson.Util; import hudson.util.StreamTaskListener; import java.io.File; import java.nio.charset.Charset; +import java.util.Date; import java.util.Map; import java.util.TimeZone; import java.util.TreeMap; @@ -65,7 +66,7 @@ public class RunIdMigratorTest { migrator = new RunIdMigrator(); dir = tmp.getRoot(); } - + @Test public void newJob() throws Exception { migrator.created(dir); assertEquals("{legacyIds=''}", summarize()); @@ -149,4 +150,4 @@ public class RunIdMigratorTest { return m.toString(); } -} \ No newline at end of file +} -- GitLab