/*
* Copyright 2011-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.glowroot.agent.embedded.repo;
import java.util.UUID;
import org.glowroot.agent.collector.Collector.TraceReader;
import org.glowroot.agent.collector.Collector.TraceVisitor;
import org.glowroot.common.util.Styles;
import org.glowroot.wire.api.model.TraceOuterClass.Trace;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@Styles.Private
class TraceTestData {
static TraceReader createTraceReader() {
return new TraceReaderImpl(createTraceHeader());
}
static TraceReader createTraceReader(Trace.Header header) {
return new TraceReaderImpl(header);
}
static Trace.Header createTraceHeader() {
return Trace.Header.newBuilder()
.setSlow(true)
.setStartTime(1)
.setCaptureTime(11)
.setDurationNanos(MILLISECONDS.toNanos(10))
.setTransactionType("unit test")
.setTransactionName("test transaction name")
.setHeadline("test headline")
.setUser("j")
.addAttribute(Trace.Attribute.newBuilder()
.setName("abc")
.addValue("xyz"))
.addAttribute(Trace.Attribute.newBuilder()
.setName("xyz")
.addValue("abc"))
.addDetailEntry(Trace.DetailEntry.newBuilder()
.setName("abc1")
.addValue(Trace.DetailValue.newBuilder().setString("xyz1").build()))
.addDetailEntry(Trace.DetailEntry.newBuilder()
.setName("xyz2")
.addValue(Trace.DetailValue.newBuilder().setString("abc2").build()))
.setMainThreadRootTimer(Trace.Timer.newBuilder()
.setName("the top")
.setExtended(false)
.setTotalNanos(123)
.setCount(1))
.build();
}
private static class TraceReaderImpl implements TraceReader {
private final String traceId;
private final Trace.Header header;
private TraceReaderImpl(Trace.Header header) {
this.header = header;
traceId = UUID.randomUUID().toString();
}
@Override
public long captureTime() {
return header.getCaptureTime();
}
@Override
public String traceId() {
return traceId;
}
@Override
public boolean partial() {
return false;
}
@Override
public boolean update() {
return false;
}
@Override
public void accept(TraceVisitor traceVisitor) throws Exception {
traceVisitor.visitHeader(header);
}
}
}