Search in sources :

Example 1 with Method

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("...@"));
}
Also used : Method(org.spf4j.base.avro.Method) IOException(java.io.IOException) AppendableLimiterWithOverflow(org.spf4j.io.AppendableLimiterWithOverflow) ConfigurableAppenderSupplier(org.spf4j.io.ConfigurableAppenderSupplier) ObjectAppender(org.spf4j.io.ObjectAppender) Test(org.junit.Test)

Example 2 with Method

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();
            }
        }
    }
}
Also used : Method(org.spf4j.base.avro.Method) TMap(gnu.trove.map.TMap) Map(java.util.Map)

Example 3 with Method

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());
}
Also used : Method(org.spf4j.base.avro.Method) JsonParser(com.fasterxml.jackson.core.JsonParser)

Example 4 with Method

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);
    }
}
Also used : JsonToken(com.fasterxml.jackson.core.JsonToken) Method(org.spf4j.base.avro.Method) JsonParseException(com.fasterxml.jackson.core.JsonParseException)

Example 5 with Method

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;
            }
        }
    }
}
Also used : Method(org.spf4j.base.avro.Method) TMap(gnu.trove.map.TMap) Map(java.util.Map)

Aggregations

Method (org.spf4j.base.avro.Method)29 Test (org.junit.Test)8 SampleNode (org.spf4j.stackmonitor.SampleNode)8 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)6 Map (java.util.Map)5 TMap (gnu.trove.map.TMap)3 IOException (java.io.IOException)3 Pair (org.spf4j.base.Pair)3 JsonParser (com.fasterxml.jackson.core.JsonParser)2 TIntObjectHashMap (gnu.trove.map.hash.TIntObjectHashMap)2 Point (java.awt.Point)2 BufferedReader (java.io.BufferedReader)2 StringReader (java.io.StringReader)2 UncheckedIOException (java.io.UncheckedIOException)2 Nullable (javax.annotation.Nullable)2 StackSampleElement (org.spf4j.base.avro.StackSampleElement)2 AvroStackSampleSupplier (org.spf4j.stackmonitor.AvroStackSampleSupplier)2 JsonParseException (com.fasterxml.jackson.core.JsonParseException)1 JsonToken (com.fasterxml.jackson.core.JsonToken)1 Clipboard (java.awt.datatransfer.Clipboard)1