blob: c76edd39b3aa6c3885a26b87eb589197dd70cee7 (
plain) (
blame)
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
|
package com.yahoo.vespa.hosted.node.verification.hardware.yamasreport;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yahoo.vespa.hosted.node.verification.hardware.benchmarks.BenchmarkResults;
import java.util.HashMap;
import java.util.Map;
/**
* Created by sgrostad on 12/07/2017.
* JSON-mapped class for reporting to YAMAS
*/
public class YamasHardwareReport {
@JsonProperty
private long timestamp;
@JsonProperty
private HardwareReportDimensions dimensions;
@JsonProperty
private HardwareReportMetrics metrics;
@JsonProperty
JsonObjectWrapper<JsonObjectWrapper<String[]>> routing;
public YamasHardwareReport() {
this.timestamp = System.currentTimeMillis() / 1000L;
setRouting();
}
public HardwareReportDimensions getDimensions() {
return dimensions;
}
public void setDimensions(HardwareReportDimensions dimensions) {
this.dimensions = dimensions;
}
public HardwareReportMetrics getMetrics() {
return metrics;
}
public void setMetrics(HardwareReportMetrics metrics) {
this.metrics = metrics;
}
private void setRouting() {
JsonObjectWrapper<String[]> wrap = new JsonObjectWrapper<>("namespace", new String[]{"Vespa"});
routing = new JsonObjectWrapper<>("yamas", wrap);
}
public void createReportFromBenchmarkResults(BenchmarkResults benchmarkResults) {
metrics = new HardwareReportMetrics();
dimensions = new HardwareReportDimensions();
metrics.setCpuCyclesPerSec(benchmarkResults.getCpuCyclesPerSec());
metrics.setDiskSpeedMbs(benchmarkResults.getDiskSpeedMbs());
metrics.setMemoryWriteSpeedGBs(benchmarkResults.getMemoryWriteSpeedGBs());
metrics.setMemoryReadSpeedGBs(benchmarkResults.getMemoryReadSpeedGBs());
}
class JsonObjectWrapper<T> {
private Map<String, T> wrappedObjects = new HashMap<String, T>();
public JsonObjectWrapper(String name, T wrappedObject) {
this.wrappedObjects.put(name, wrappedObject);
}
@JsonAnyGetter
public Map<String, T> any() {
return wrappedObjects;
}
@JsonAnySetter
public void set(String name, T value) {
wrappedObjects.put(name, value);
}
}
}
|