Convert units from ns to ms for zircon_benchmarks

Change-Id: Id32b85044b0ce624b0f6819d056261d0bcec789d
diff --git a/catapult/histogram.go b/catapult/histogram.go
index f216c5f..59e21f6 100644
--- a/catapult/histogram.go
+++ b/catapult/histogram.go
@@ -15,6 +15,9 @@
 
 // Histogram is a Catapult histogram object.
 //
+// See https://github.com/catapult-project/catapult/blob/master/docs/histogram-set-json-format.md
+// for more information on the format.
+//
 // TODO(kjharland): Add these missing fields as needed
 //   ShortName
 //   BinBoundaries
@@ -50,18 +53,22 @@
 }
 
 // Creates a histogram from the given variant and benchmark data set.
+//
+// TODO(kjharland): Generalize to suppport non-zircon benchmarks once I have
+// a better idea of how other benchmarks will be converted.
 func createHistogram(v schema.Variant, d schema.BenchmarkData) Histogram {
 	var sampleValues []float64
 	for _, sample := range d.Samples {
-		sampleValues = append(sampleValues, sample.Values...)
+		// All zircon benchmarks use nanoseconds. Catapult doesn't support this,
+		// so convert to milliseconds instead.
+		for _, nanoseconds := range sample.Values {
+			sampleValues = append(sampleValues, nanoseconds/1e6)
+		}
 	}
 
 	return Histogram{
-		// FIXME(kjharland): Verify naming scheme with mseaborn@
-		Name: fmt.Sprintf("%v, %v", v.VariantDesc, d.Label),
-		// FIXME(kjharland): nanoseconds (ns) is not supported. Check with catapult team
-		// or change granularity of benchmarks if possible.
-		Unit:         d.Unit,
+		Name:         fmt.Sprintf("%v, %v", v.VariantDesc, d.Label),
+		Unit:         "timeInMsAutoFormat_smallerIsBetter",
 		GUID:         uuid.NewV4().String(),
 		NumNans:      0, // All samples are numeric values
 		SampleValues: sampleValues,
diff --git a/catapult/histogram_test.go b/catapult/histogram_test.go
index b5ceb3b..ed4fb0b 100644
--- a/catapult/histogram_test.go
+++ b/catapult/histogram_test.go
@@ -47,11 +47,25 @@
 	assert.Equal(s.T(), len(histogramSet), 1)
 	assert.Equal(s.T(), histogram.Name, "example_variant, example_benchmark_data")
 	assert.Len(s.T(), histogram.GUID, 36)
-	assert.Equal(s.T(), histogram.Unit, "ns")
+	assert.Equal(s.T(), histogram.Unit, "timeInMsAutoFormat_smallerIsBetter")
 	assert.Empty(s.T(), histogram.Description)
 	assert.Empty(s.T(), histogram.Diagnostics)
-	assert.ElementsMatch(s.T(), histogram.SampleValues, []float64{10, 20, 30, 40, 50})
+	assert.ElementsMatch(s.T(), histogram.SampleValues, []float64{
+		1e-5,
+		2e-5,
+		3e-5,
+		4e-5,
+		5e-5,
+	})
 	assert.Equal(s.T(), histogram.MaxNumSampleValues, 5)
 	assert.Equal(s.T(), histogram.NumNans, 0)
-	assert.ElementsMatch(s.T(), histogram.Running, []float64{5, 50, 0, 30, 10, 150, 250})
+	assert.ElementsMatch(s.T(), histogram.Running, []float64{
+		5,     // count
+		5e-05, // max
+		0,     // meanlogs
+		3.0000000000000004e-05, //mean
+		1e-5, // min
+		1.5000000000000001e-4, //sum
+		2.5e-10,               // variance
+	})
 }