Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-16301] Verifying current serial format as a baseline.
  • Loading branch information
jglick committed May 22, 2013
1 parent 07280ed commit 8d2e452
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 4 deletions.
25 changes: 21 additions & 4 deletions core/src/main/java/hudson/model/Fingerprint.java
Expand Up @@ -24,11 +24,11 @@
package hudson.model;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.converters.basic.DateConverter;
import com.thoughtworks.xstream.converters.collections.CollectionConverter;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
Expand Down Expand Up @@ -61,6 +61,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand Down Expand Up @@ -180,6 +181,10 @@ public boolean belongsTo(Job job) {

return false;
}

@Override public String toString() {
return name + " #" + number;
}
}

/**
Expand Down Expand Up @@ -581,11 +586,15 @@ public void onRenamed(Item item, String oldName, String newName) {
private transient volatile List<FingerprintFacet> transientFacets = null;

public Fingerprint(Run build, String fileName, byte[] md5sum) throws IOException {
this.original = build==null ? null : new BuildPtr(build);
this(build==null ? null : new BuildPtr(build), fileName, md5sum);
save();
}

Fingerprint(BuildPtr original, String fileName, byte[] md5sum) {
this.original = original;
this.md5sum = md5sum;
this.fileName = fileName;
this.timestamp = new Date();
save();
}

/**
Expand Down Expand Up @@ -838,13 +847,17 @@ public synchronized void save() throws IOException {
start = System.currentTimeMillis();

File file = getFingerprintFile(md5sum);
getConfigFile(file).write(this);
save(file);
SaveableListener.fireOnChange(this, getConfigFile(file));

if(logger.isLoggable(Level.FINE))
logger.fine("Saving fingerprint "+file+" took "+(System.currentTimeMillis()-start)+"ms");
}

void save(File file) throws IOException {
getConfigFile(file).write(this);
}

/**
* Update references to a renamed job in the fingerprint
*/
Expand Down Expand Up @@ -932,6 +945,10 @@ private static File getFingerprintFile(byte[] md5sum) {
}
}

@Override public String toString() {
return "Fingerprint[original=" + original + ",hash=" + getHashString() + ",fileName=" + fileName + ",timestamp=" + new DateConverter().toString(timestamp) + ",usages=" + new TreeMap<String,RangeSet>(usages) + ",facets=" + facets + "]";
}

private static final XStream XSTREAM = new XStream2();
static {
XSTREAM.alias("fingerprint",Fingerprint.class);
Expand Down
4 changes: 4 additions & 0 deletions core/src/main/java/hudson/util/PersistedList.java
Expand Up @@ -193,6 +193,10 @@ public boolean contains(Object item) {
return data.contains(item);
}

@Override public String toString() {
return toList().toString();
}

/**
* {@link Converter} implementation for XStream.
*
Expand Down
13 changes: 13 additions & 0 deletions core/src/test/java/hudson/model/FingerprintTest.java
Expand Up @@ -24,6 +24,7 @@
package hudson.model;

import hudson.model.Fingerprint.RangeSet;
import java.io.File;
import static org.junit.Assert.*;
import org.junit.Test;

Expand Down Expand Up @@ -115,4 +116,16 @@ public class FingerprintTest {
x.add(y);
assertEquals("[1,2),[3,4),[5,6),[7,8)",x.toString());
}

@Test public void deserialize() throws Exception {
assertEquals("Fingerprint["
+ "original=stapler/org.kohsuke.stapler:stapler-jelly #123,"
+ "hash=069484c9e963cc615c51278327da8eab,"
+ "fileName=org.kohsuke.stapler:stapler-jelly-1.207.jar,"
+ "timestamp=2013-05-21 19:20:03.534 UTC,"
+ "usages={stuff=[304,306),[307,324),[328,330), stuff/test:stuff=[2,67),[72,77),[84,223),[228,229),[232,268)},"
+ "facets=[]]",
Fingerprint.load(new File(FingerprintTest.class.getResource("fingerprint.xml").toURI())).toString());
}

}
21 changes: 21 additions & 0 deletions core/src/test/resources/hudson/model/fingerprint.xml
@@ -0,0 +1,21 @@
<?xml version='1.0' encoding='UTF-8'?>
<fingerprint>
<timestamp>2013-05-21 19:20:03.534 UTC</timestamp>
<original>
<name>stapler/org.kohsuke.stapler:stapler-jelly</name>
<number>123</number>
</original>
<md5sum>069484c9e963cc615c51278327da8eab</md5sum>
<fileName>org.kohsuke.stapler:stapler-jelly-1.207.jar</fileName>
<usages>
<entry>
<string>stuff/test:stuff</string>
<ranges>2-66,72-76,84-222,228,232-267</ranges>
</entry>
<entry>
<string>stuff</string>
<ranges>304-305,307-323,328-329</ranges>
</entry>
</usages>
<facets/>
</fingerprint>

0 comments on commit 8d2e452

Please sign in to comment.