[AETHER-599] Implement FabricPipelineTraceable
Core changes supporting fabric traceable implementation.
Includes minor fixes to the OFDPA traceable unit tests
Change-Id: I2f0d1172022a8fc725df9e96526092c59ddc0e0b
diff --git a/core/api/src/main/java/org/onosproject/net/PipelineTraceableOutput.java b/core/api/src/main/java/org/onosproject/net/PipelineTraceableOutput.java
index 21a9819..66a18c0 100644
--- a/core/api/src/main/java/org/onosproject/net/PipelineTraceableOutput.java
+++ b/core/api/src/main/java/org/onosproject/net/PipelineTraceableOutput.java
@@ -74,7 +74,7 @@
*
* @return the log message
*/
- public String getLog() {
+ public String log() {
return log;
}
@@ -83,7 +83,7 @@
*
* @return the pipeline hit chains
*/
- public List<PipelineTraceableHitChain> getHitChains() {
+ public List<PipelineTraceableHitChain> hitChains() {
return hitChains;
}
@@ -92,7 +92,7 @@
*
* @return the pipeline traceable result
*/
- public PipelineTraceableResult getResult() {
+ public PipelineTraceableResult result() {
return result;
}
@@ -106,6 +106,16 @@
}
/**
+ * Returns a new builder initialized with the traceable output.
+ *
+ * @param pipelineTraceableOutput the output used for the initialization
+ * @return an initialized builder
+ */
+ public static PipelineTraceableOutput.Builder builder(PipelineTraceableOutput pipelineTraceableOutput) {
+ return new PipelineTraceableOutput.Builder(pipelineTraceableOutput);
+ }
+
+ /**
* Builder of pipeline traceable entities.
*/
public static final class Builder {
@@ -114,6 +124,15 @@
private List<PipelineTraceableHitChain> hitChains = Lists.newArrayList();
private PipelineTraceableResult result = PipelineTraceableResult.SUCCESS;
+ private Builder() {
+ }
+
+ private Builder(PipelineTraceableOutput traceableOutput) {
+ appendToLog("\n" + traceableOutput.log());
+ setResult(traceableOutput.result());
+ traceableOutput.hitChains().forEach(this::addHitChain);
+ }
+
/**
* Appends a message to the log.
*
@@ -128,7 +147,7 @@
return this;
}
- private Builder setResult(PipelineTraceableResult result) {
+ public Builder setResult(PipelineTraceableResult result) {
// Do not override original failure
if (this.result == PipelineTraceableResult.SUCCESS) {
this.result = result;