Search in sources :

Example 46 with Gauge

use of com.codahale.metrics.Gauge in project lucene-solr by apache.

the class TestIndexSearcher method testReopen.

public void testReopen() throws Exception {
    assertU(adoc("id", "1", "v_t", "Hello Dude", "v_s1", "string1"));
    assertU(adoc("id", "2", "v_t", "Hello Yonik", "v_s1", "string2"));
    assertU(commit());
    SolrQueryRequest sr1 = req("q", "foo");
    IndexReader r1 = sr1.getSearcher().getRawReader();
    String sval1 = getStringVal(sr1, "v_s1", 0);
    assertEquals("string1", sval1);
    assertU(adoc("id", "3", "v_s1", "{!literal}"));
    assertU(adoc("id", "4", "v_s1", "other stuff"));
    assertU(commit());
    SolrQueryRequest sr2 = req("q", "foo");
    IndexReader r2 = sr2.getSearcher().getRawReader();
    // make sure the readers share the first segment
    // Didn't work w/ older versions of lucene2.9 going from segment -> multi
    assertEquals(r1.leaves().get(0).reader(), r2.leaves().get(0).reader());
    assertU(adoc("id", "5", "v_f", "3.14159"));
    assertU(adoc("id", "6", "v_f", "8983", "v_s1", "string6"));
    assertU(commit());
    SolrQueryRequest sr3 = req("q", "foo");
    IndexReader r3 = sr3.getSearcher().getRawReader();
    // make sure the readers share segments
    // assertEquals(r1.getLeafReaders()[0], r3.getLeafReaders()[0]);
    assertEquals(r2.leaves().get(0).reader(), r3.leaves().get(0).reader());
    assertEquals(r2.leaves().get(1).reader(), r3.leaves().get(1).reader());
    sr1.close();
    sr2.close();
    // should currently be 1, but this could change depending on future index management
    int baseRefCount = r3.getRefCount();
    assertEquals(1, baseRefCount);
    Map<String, Metric> metrics = h.getCore().getCoreMetricManager().getRegistry().getMetrics();
    Gauge<Date> g = (Gauge<Date>) metrics.get("SEARCHER.searcher.registeredAt");
    Date sr3SearcherRegAt = g.getValue();
    // nothing has changed
    assertU(commit());
    SolrQueryRequest sr4 = req("q", "foo");
    assertSame("nothing changed, searcher should be the same", sr3.getSearcher(), sr4.getSearcher());
    assertEquals("nothing changed, searcher should not have been re-registered", sr3SearcherRegAt, g.getValue());
    IndexReader r4 = sr4.getSearcher().getRawReader();
    // force an index change so the registered searcher won't be the one we are testing (and
    // then we should be able to test the refCount going all the way to 0
    assertU(adoc("id", "7", "v_f", "7574"));
    assertU(commit());
    // test that reader didn't change
    assertSame(r3, r4);
    assertEquals(baseRefCount, r4.getRefCount());
    sr3.close();
    assertEquals(baseRefCount, r4.getRefCount());
    sr4.close();
    assertEquals(baseRefCount - 1, r4.getRefCount());
    SolrQueryRequest sr5 = req("q", "foo");
    IndexReaderContext rCtx5 = sr5.getSearcher().getTopReaderContext();
    assertU(delI("1"));
    assertU(commit());
    SolrQueryRequest sr6 = req("q", "foo");
    IndexReaderContext rCtx6 = sr6.getSearcher().getTopReaderContext();
    // only a single doc left in the first segment
    assertEquals(1, rCtx6.leaves().get(0).reader().numDocs());
    // readers now different
    assertTrue(!rCtx5.leaves().get(0).reader().equals(rCtx6.leaves().get(0).reader()));
    sr5.close();
    sr6.close();
}
Also used : SolrQueryRequest(org.apache.solr.request.SolrQueryRequest) IndexReader(org.apache.lucene.index.IndexReader) Metric(com.codahale.metrics.Metric) Date(java.util.Date) IndexReaderContext(org.apache.lucene.index.IndexReaderContext) Gauge(com.codahale.metrics.Gauge)

Example 47 with Gauge

use of com.codahale.metrics.Gauge in project lucene-solr by apache.

the class MetricUtils method convertMetric.

/**
   * Convert a single instance of metric into a map or flattened object.
   * @param n metric name
   * @param metric metric instance
   * @param propertyFilter limit what properties of a metric are returned
   * @param skipHistograms discard any {@link Histogram}-s and histogram parts of {@link Timer}-s.
   * @param skipAggregateValues discard internal values of {@link AggregateMetric}-s.
   * @param compact use compact representation for counters and gauges.
   * @param simple use simplified representation for complex metrics - instead of a (name, map)
   *             only the selected (name "." key, value) pairs will be produced.
   * @param consumer consumer that accepts produced objects
   */
static void convertMetric(String n, Metric metric, PropertyFilter propertyFilter, boolean skipHistograms, boolean skipAggregateValues, boolean compact, boolean simple, BiConsumer<String, Object> consumer) {
    if (metric instanceof Counter) {
        Counter counter = (Counter) metric;
        convertCounter(n, counter, propertyFilter, compact, consumer);
    } else if (metric instanceof Gauge) {
        Gauge gauge = (Gauge) metric;
        try {
            convertGauge(n, gauge, propertyFilter, simple, compact, consumer);
        } catch (InternalError ie) {
            if (n.startsWith("memory.") && ie.getMessage().contains("Memory Pool not found")) {
                LOG.warn("Error converting gauge '" + n + "', possible JDK bug: SOLR-10362", ie);
                consumer.accept(n, null);
            } else {
                throw ie;
            }
        }
    } else if (metric instanceof Meter) {
        Meter meter = (Meter) metric;
        convertMeter(n, meter, propertyFilter, simple, consumer);
    } else if (metric instanceof Timer) {
        Timer timer = (Timer) metric;
        convertTimer(n, timer, propertyFilter, skipHistograms, simple, consumer);
    } else if (metric instanceof Histogram) {
        if (!skipHistograms) {
            Histogram histogram = (Histogram) metric;
            convertHistogram(n, histogram, propertyFilter, simple, consumer);
        }
    } else if (metric instanceof AggregateMetric) {
        convertAggregateMetric(n, (AggregateMetric) metric, propertyFilter, skipAggregateValues, simple, consumer);
    }
}
Also used : Histogram(com.codahale.metrics.Histogram) Counter(com.codahale.metrics.Counter) Timer(com.codahale.metrics.Timer) Meter(com.codahale.metrics.Meter) AggregateMetric(org.apache.solr.metrics.AggregateMetric) Gauge(com.codahale.metrics.Gauge)

Example 48 with Gauge

use of com.codahale.metrics.Gauge in project lucene-solr by apache.

the class BasicFunctionalityTest method testSomeStuff.

@Test
public void testSomeStuff() throws Exception {
    clearIndex();
    SolrCore core = h.getCore();
    // test that we got the expected config, not just hardcoded defaults
    assertNotNull(core.getRequestHandler("mock"));
    // test stats call
    SolrMetricManager manager = core.getCoreContainer().getMetricManager();
    String registry = core.getCoreMetricManager().getRegistryName();
    Map<String, Metric> metrics = manager.registry(registry).getMetrics();
    assertTrue(metrics.containsKey("CORE.coreName"));
    assertTrue(metrics.containsKey("CORE.refCount"));
    Gauge<Number> g = (Gauge<Number>) metrics.get("CORE.refCount");
    assertTrue(g.getValue().intValue() > 0);
    lrf.args.put(CommonParams.VERSION, "2.2");
    assertQ("test query on empty index", req("qlkciyopsbgzyvkylsjhchghjrdf"), "//result[@numFound='0']");
    // test escaping of ";"
    assertU("deleting 42 for no reason at all", delI("42"));
    assertU("adding doc#42", adoc("id", "42", "val_s", "aa;bb"));
    assertU("does commit work?", commit());
    assertQ("backslash escaping semicolon", req("id:42 AND val_s:aa\\;bb"), "//*[@numFound='1']", "//int[@name='id'][.='42']");
    assertQ("quote escaping semicolon", req("id:42 AND val_s:\"aa;bb\""), "//*[@numFound='1']", "//int[@name='id'][.='42']");
    assertQ("no escaping semicolon", req("id:42 AND val_s:aa"), "//*[@numFound='0']");
    assertU(delI("42"));
    assertU(commit());
    assertQ(req("id:42"), "//*[@numFound='0']");
    // test overwrite default of true
    assertU(adoc("id", "42", "val_s", "AAA"));
    assertU(adoc("id", "42", "val_s", "BBB"));
    assertU(commit());
    assertQ(req("id:42"), "//*[@numFound='1']", "//str[.='BBB']");
    assertU(adoc("id", "42", "val_s", "CCC"));
    assertU(adoc("id", "42", "val_s", "DDD"));
    assertU(commit());
    assertQ(req("id:42"), "//*[@numFound='1']", "//str[.='DDD']");
    // test deletes
    String[] adds = new String[] { add(doc("id", "101"), "overwrite", "true"), add(doc("id", "101"), "overwrite", "true"), add(doc("id", "105"), "overwrite", "false"), add(doc("id", "102"), "overwrite", "true"), add(doc("id", "103"), "overwrite", "false"), add(doc("id", "101"), "overwrite", "true") };
    for (String a : adds) {
        assertU(a, a);
    }
    assertU(commit());
    // test maxint
    assertQ(req("q", "id:[100 TO 110]", "rows", "2147483647"), "//*[@numFound='4']");
    // test big limit
    assertQ(req("q", "id:[100 TO 111]", "rows", "1147483647"), "//*[@numFound='4']");
    assertQ(req("id:[100 TO 110]"), "//*[@numFound='4']");
    assertU(delI("102"));
    assertU(commit());
    assertQ(req("id:[100 TO 110]"), "//*[@numFound='3']");
    assertU(delI("105"));
    assertU(commit());
    assertQ(req("id:[100 TO 110]"), "//*[@numFound='2']");
    assertU(delQ("id:[100 TO 110]"));
    assertU(commit());
    assertQ(req("id:[100 TO 110]"), "//*[@numFound='0']");
    assertU(h.simpleTag("rollback"));
    assertU(commit());
}
Also used : SolrCore(org.apache.solr.core.SolrCore) SolrMetricManager(org.apache.solr.metrics.SolrMetricManager) Metric(com.codahale.metrics.Metric) Gauge(com.codahale.metrics.Gauge) Test(org.junit.Test)

Example 49 with Gauge

use of com.codahale.metrics.Gauge in project sling by apache.

the class MetricWebConsolePlugin method addGaugeDetails.

private void addGaugeDetails(PrintWriter pw, SortedMap<String, Gauge> gauges) {
    if (gauges.isEmpty()) {
        return;
    }
    pw.println("<br>");
    pw.println("<div class='table'>");
    pw.println("<div class='ui-widget-header ui-corner-top buttonGroup'>Gauges</div>");
    pw.println("<table class='nicetable' id='data-gauges'>");
    pw.println("<thead>");
    pw.println("<tr>");
    pw.println("<th class='header'>Name</th>");
    pw.println("<th class='header'>Value</th>");
    pw.println("</tr>");
    pw.println("</thead>");
    pw.println("<tbody>");
    String rowClass = "odd";
    for (Map.Entry<String, Gauge> e : gauges.entrySet()) {
        Gauge g = e.getValue();
        String name = e.getKey();
        pw.printf("<tr class='%s ui-state-default'>%n", rowClass);
        pw.printf("<td>%s</td>", name);
        pw.printf("<td>%s</td>", g.getValue());
        pw.println("</tr>");
        rowClass = "odd".equals(rowClass) ? "even" : "odd";
    }
    pw.println("</tbody>");
    pw.println("</table>");
    pw.println("</div>");
}
Also used : ConcurrentMap(java.util.concurrent.ConcurrentMap) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) SortedMap(java.util.SortedMap) Gauge(com.codahale.metrics.Gauge)

Example 50 with Gauge

use of com.codahale.metrics.Gauge in project metrics by dropwizard.

the class JmxReporterTest method registersMBeansForMetricObjectsUsingProvidedObjectNameFactory.

@Test
public void registersMBeansForMetricObjectsUsingProvidedObjectNameFactory() throws Exception {
    ObjectName n = new ObjectName(name + ":name=dummy");
    try {
        String widgetName = "something";
        when(mockObjectNameFactory.createName(any(String.class), any(String.class), any(String.class))).thenReturn(n);
        Gauge aGauge = mock(Gauge.class);
        when(aGauge.getValue()).thenReturn(1);
        JmxReporter reporter = JmxReporter.forRegistry(registry).registerWith(mBeanServer).inDomain(name).createsObjectNamesWith(mockObjectNameFactory).build();
        registry.register(widgetName, aGauge);
        reporter.start();
        verify(mockObjectNameFactory).createName(eq("gauges"), any(String.class), eq("something"));
    // verifyNoMoreInteractions(mockObjectNameFactory);
    } finally {
        reporter.stop();
        if (mBeanServer.isRegistered(n)) {
            mBeanServer.unregisterMBean(n);
        }
    }
}
Also used : ObjectName(javax.management.ObjectName) Gauge(com.codahale.metrics.Gauge) Test(org.junit.Test)

Aggregations

Gauge (com.codahale.metrics.Gauge)64 Test (org.junit.Test)43 Counter (com.codahale.metrics.Counter)10 MetricRegistry (com.codahale.metrics.MetricRegistry)9 Meter (com.codahale.metrics.Meter)8 Metric (com.codahale.metrics.Metric)8 Timer (com.codahale.metrics.Timer)7 SortedMap (java.util.SortedMap)7 Histogram (com.codahale.metrics.Histogram)6 Map (java.util.Map)6 Matchers.anyString (org.mockito.Matchers.anyString)3 Snapshot (com.codahale.metrics.Snapshot)2 Date (java.util.Date)2 HashMap (java.util.HashMap)2 TreeMap (java.util.TreeMap)2 Semaphore (java.util.concurrent.Semaphore)2 SolrMetricManager (org.apache.solr.metrics.SolrMetricManager)2 SolrQueryRequest (org.apache.solr.request.SolrQueryRequest)2 ValueList (org.collectd.api.ValueList)2 Assertion (org.opensaml.saml.saml2.core.Assertion)2