use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class Slf4jMessageFormatterTest method testFormatter2.
@Test
public void testFormatter2() throws IOException {
ConfigurableAppenderSupplier appSupp = new ConfigurableAppenderSupplier();
LOG.debug("ConfAppenderSupp = {}", appSupp);
StringBuilder sb = new StringBuilder();
final long currentTimeMillis = System.currentTimeMillis();
Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, new java.sql.Date(currentTimeMillis));
Assert.assertEquals("bla bla " + DateTimeFormats.DT_FORMAT.format(Instant.now()), sb.toString());
sb.setLength(0);
Method method = new Method("c1", "m1");
int written = Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, method);
Assert.assertEquals("bla bla {\"declaringClass\":\"c1\",\"name\":\"m1\"}", sb.toString());
Assert.assertEquals(1, written);
sb.setLength(0);
written = Slf4jMessageFormatter.format(1, sb, "bla bla {}", appSupp, "ifff", method);
Assert.assertEquals("bla bla {\"declaringClass\":\"c1\",\"name\":\"m1\"}", sb.toString());
Assert.assertEquals(2, written);
sb.setLength(0);
written = Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, method, "yohooo");
LOG.debug("formatted message: {}", sb);
Assert.assertEquals(1, written);
sb.setLength(0);
written = Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp);
LOG.debug("formatted message: {}", sb);
Assert.assertEquals(0, written);
sb.setLength(0);
EscapeJsonStringAppendableWrapper escaper = new EscapeJsonStringAppendableWrapper(sb);
Slf4jMessageFormatter.format(escaper, "bla bla {} {}", appSupp, "\n\u2013\u0010", new int[] { 1, 2, 3 });
LOG.debug("formatted message: {}", sb);
Assert.assertEquals("bla bla \\n–\\u0010 [1, 2, 3]", sb.toString());
appSupp.replace(CoreTextMediaType.TEXT_PLAIN, String.class, (final ObjectAppender<? super String> input) -> new ObjectAppender<String>() {
@Override
public void append(final String object, final Appendable appendTo) throws IOException {
try (AppendableLimiterWithOverflow limiter = new AppendableLimiterWithOverflow(90, File.createTempFile("string", ".overflow"), "...@", StandardCharsets.UTF_8, appendTo)) {
limiter.append(object);
}
}
});
sb.setLength(0);
Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, "012345678901234567890123456789012345678901234567" + "89012345678901234567890123456789012345678901234567890123456789");
LOG.debug("formatted message: {}", sb);
Assert.assertThat(sb.toString(), Matchers.containsString("...@"));
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class SampleNode method diff.
/**
* Similar as set difference.
* will remove everything from this that matches other.
* if "other" has more samples all matching samples in this will be removed, no negative samples will be recorded.
* @param other
*/
public void diff(final SampleNode other) {
int thisSelfSampleCount = getSelfSampleCount();
int otherSelfSampleCount = other.getSelfSampleCount();
int selfDiff = thisSelfSampleCount - otherSelfSampleCount;
if (selfDiff > 0) {
this.sampleCount -= otherSelfSampleCount;
} else {
this.sampleCount -= thisSelfSampleCount;
}
Iterator<Map.Entry<Method, SampleNode>> it = this.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Method, SampleNode> entry = it.next();
Method m = entry.getKey();
SampleNode csn = entry.getValue();
SampleNode osn = other.get(m);
if (osn != null) {
int oSamples = csn.sampleCount;
csn.diff(osn);
int nSamples = csn.sampleCount;
this.sampleCount -= oSamples - nSamples;
if (nSamples <= 0) {
it.remove();
}
}
}
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class SampleNode method parseD3Json.
public static Pair<Method, SampleNode> parseD3Json(@WillNotClose final Reader r) throws IOException {
JsonParser jsonP = Json.FACTORY.createParser(r);
consume(jsonP, JsonToken.START_OBJECT);
MutableHolder<Method> method = MutableHolder.of(null);
MutableHolder<SampleNode> samples = MutableHolder.of((SampleNode) null);
parseD3Json(jsonP, (m, s) -> {
method.setValue(m);
samples.setValue(s);
});
return Pair.of(method.get(), samples.get());
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class SampleNode method parseInto.
public static void parseInto(final JsonParser jsonP, final SampleNode parentNode) throws IOException {
consume(jsonP, JsonToken.FIELD_NAME);
String name = jsonP.getCurrentName();
consume(jsonP, JsonToken.VALUE_NUMBER_INT);
int sc = jsonP.getIntValue();
JsonToken nextToken = jsonP.nextToken();
Method method = Methods.from(name);
SampleNode sn = parentNode.get(method);
if (sn == null) {
sn = new SampleNode(sc);
parentNode.put(method, sn);
} else {
sn.sampleCount += sc;
}
if (nextToken == JsonToken.END_OBJECT) {
return;
} else if (nextToken == JsonToken.FIELD_NAME) {
consume(jsonP, JsonToken.START_ARRAY);
while (jsonP.nextToken() != JsonToken.END_ARRAY) {
parseInto(jsonP, sn);
}
consume(jsonP, JsonToken.END_OBJECT);
} else {
throw new JsonParseException(jsonP, "Expected field name or end Object, not: " + nextToken);
}
}
use of org.spf4j.base.avro.Method in project spf4j by zolyfarkas.
the class SampleNode method intersect.
/**
* Intersect this sample with other.
* The sample will be mutated to contain the intersection of this and other.
* @param other
*/
public void intersect(final SampleNode other) {
int thisSelfSampleCount = getSelfSampleCount();
int otherSelfSampleCount = other.getSelfSampleCount();
this.sampleCount = Math.min(thisSelfSampleCount, otherSelfSampleCount);
Iterator<Map.Entry<Method, SampleNode>> it = this.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Method, SampleNode> entry = it.next();
Method m = entry.getKey();
SampleNode csn = entry.getValue();
SampleNode osn = other.get(m);
if (osn != null) {
csn.intersect(osn);
if (csn.sampleCount <= 0) {
it.remove();
} else {
this.sampleCount += csn.sampleCount;
}
}
}
}
Aggregations