Examples of GGParserStatistics


Examples of com.linkedin.databus.monitoring.mbean.GGParserStatistics

    addToTrailFile(new File(ggTrailDir.getAbsolutePath() + "/x302"), 200, 4);
    totalTransWritten = 8;
    totalFilesWritten = 2;

    // get hold of parser stats object
    final GGParserStatistics ggParserStats = gg.getParserStats();

    // all should be 0
    Assert.assertEquals(0, ggParserStats.getNumFilesParsed());
    Assert.assertEquals(0, ggParserStats.getNumFilesAdded());
    Assert.assertEquals(0, ggParserStats.getFilesLag());
    Assert.assertEquals(0, ggParserStats.getTimeLag());
    Assert.assertEquals(0, ggParserStats.getBytesLag());

    try
    {
      LOG.info("starting event producer");
      gg.start(-2); // -2 here does nothing. actual setting happens thru the mock of
                    // MaxSCNReadWriter
      // let it parse first files

      TestUtil.assertWithBackoff(new ConditionCheck()
      {
        @Override
        public boolean check()
        {
          return ggParserStats.getNumFilesParsed() == 2
              && (8 * _transactionPatternSize == ggParserStats.getNumBytesTotalParsed());
        }
      }, "First two files parsed", 2000, LOG);

      // stats in the interim
      Assert.assertEquals(2, ggParserStats.getNumFilesParsed());
      Assert.assertEquals(2, ggParserStats.getNumFilesAdded());
      Assert.assertEquals(0, ggParserStats.getFilesLag());
      Assert.assertEquals(0, ggParserStats.getTimeLag());
      Assert.assertEquals(0, ggParserStats.getBytesLag());

      Assert.assertEquals(totalTransWritten * _transactionPatternSize,
                          ggParserStats.getNumBytesTotalParsed());

      gg.pause();

      // the file will get parsed but not processed
      addToTrailFile(new File(ggTrailDir.getAbsolutePath() + "/x303"), 300, 4);
      totalTransWritten += 4;
      totalFilesWritten++;

      TestUtil.sleep(2000); // to get more then a ms lag time
      addToTrailFile(new File(ggTrailDir.getAbsolutePath() + "/x304"), 400, 4);

      totalTransWritten += 4;
      totalFilesWritten++;

      TestUtil.sleep(6000); // to guarantee we picked up stats update (stats are updated
                            // every 5 seconds)

      // now we should be 2 files behind. parser thread gets paused AFTER it start
      // processing the file
      // so the actuall value will be 1 file behind
      int lagFiles = 1; // 303(already started being parsed), only 304 is behind
      long lagBytes = 1 * 4 * _transactionPatternSize; // 1 file, 4 transactions each
      /*
       * Assert.assertEquals(totalFilesWritten-1, ggParserStats.getNumFilesParsed());
       * Assert.assertEquals(totalFilesWritten, ggParserStats.getNumFilesAdded());
       * Assert.assertEquals(lagFiles, ggParserStats.getFilesLag()); // because 303 got
       * parsed
       *
       * // we added 4 files and parsed 3 , so the diff should be 1 file size (4
       * trasactions in 1 file) Assert.assertEquals(lagBytes,
       * ggParserStats.getBytesLag()); Assert.assertTrue(ggParserStats.getTimeLag()>0);
       */

      gg.unpause();
      TestUtil.sleep(5000);
      // now we should catchup
      Assert.assertEquals(4, ggParserStats.getNumFilesParsed());
      Assert.assertEquals(4, ggParserStats.getNumFilesAdded());
      Assert.assertEquals(0, ggParserStats.getFilesLag());
      Assert.assertEquals(0, ggParserStats.getTimeLag());
      Assert.assertEquals(0, ggParserStats.getBytesLag());

      // append to a file
      LOG.info("pausing again");
      gg.pause();
      addToTrailFile(new File(ggTrailDir.getAbsolutePath() + "/x304"), 410, 4);
      totalTransWritten += 4;

      TestUtil.sleep(1000);
      addToTrailFile(new File(ggTrailDir.getAbsolutePath() + "/x304"), 420, 4);
      totalTransWritten += 4;

      TestUtil.sleep(2000);
      gg.unpause();

      TestUtil.sleep(5500);
      // should be still up
      Assert.assertEquals(4, ggParserStats.getNumFilesParsed());
      Assert.assertEquals(4, ggParserStats.getNumFilesAdded());
      Assert.assertEquals(0, ggParserStats.getFilesLag());
      Assert.assertEquals(0, ggParserStats.getTimeLag());
      Assert.assertEquals(0, ggParserStats.getBytesLag());

      // assert the stats
      int totalFilesSize = totalTransWritten * _transactionPatternSize;
      Assert.assertEquals((totalFilesSize / totalFilesWritten),
                          ggParserStats.getAvgFileSize());
      Assert.assertEquals(true, ggParserStats.getAvgParseTransactionTimeNs() > 0);
      Assert.assertEquals("part1", ggParserStats.getPhysicalSourceName());
      Assert.assertEquals(totalFilesSize / totalTransWritten,
                          ggParserStats.getAvgTransactionSize());
      Assert.assertEquals(423, ggParserStats.getMaxScn());
      Assert.assertEquals(totalTransWritten * 2, ggParserStats.getNumTotalEvents()); // 2
                                                                                     // events
                                                                                     // per
                                                                                     // transaction
      Assert.assertEquals(totalTransWritten, ggParserStats.getNumTransactionsTotal());
      Assert.assertEquals(totalTransWritten, ggParserStats.getNumTransactionsWithEvents());
      Assert.assertEquals(0, ggParserStats.getNumTransactionsWithoutEvents());
      Assert.assertEquals(true, ggParserStats.getTimeSinceLastAccessMs() > 0);
      Assert.assertEquals(totalTransWritten * _transactionPatternSize,
                          ggParserStats.getNumBytesTotalParsed());
      Assert.assertEquals("NumSCNRegressions", 0, ggParserStats.getNumSCNRegressions());
      Assert.assertEquals("LastSCNRegressed", -1, ggParserStats.getLastRegressedScn());
    }
    finally
    {
      gg.shutdown();
    }
View Full Code Here

Examples of com.linkedin.databus.monitoring.mbean.GGParserStatistics

                                                                                        "constant:1", (short)0, false, null, null, null);
    GGMonitoredSourceInfo source = buildGGMonitoredSourceInfo(logicalSourceStaticConfig, _pConfig);
    _monitoredSources.put(source.getSourceId(), source);

    // create stats collector for parser
    _ggParserStats = new GGParserStatistics(_pConfig.getName());
    registerParserMbean(_ggParserStats);

  }
View Full Code Here

Examples of com.linkedin.databus.monitoring.mbean.GGParserStatistics

    // generates the updates
    List<String> keys = new ArrayList<String>();
    keys.add("key1");

    GGParserStatistics ggParserStats = gg.getParserStats();

    // SCN = 10
    long timestamp = System.currentTimeMillis() * DbusConstants.NUM_NSECS_IN_MSEC;
    List<TransactionState.PerSourceTransactionalUpdate> dbUpdates1 =
        generateUpdates(sourceIds, keys, 10);
    method.invoke(handleXmlCallbackObject, new Object[] { dbUpdates1,
        new TransactionInfo(0, 0, timestamp, 10) });
    timestamp = System.currentTimeMillis() * DbusConstants.NUM_NSECS_IN_MSEC + 1;
    Assert.assertEquals("NumSCNRegressions", 0, ggParserStats.getNumSCNRegressions());
    Assert.assertEquals("NumSCNRegressions", -1, ggParserStats.getLastRegressedScn());
    Assert.assertEquals("MaxScn", 10, ggParserStats.getMaxScn());

    // SCN = 5 Regression
    List<TransactionState.PerSourceTransactionalUpdate> dbUpdates2 =
        generateUpdates(sourceIds, keys, 5); // SCN Regression here
    method.invoke(handleXmlCallbackObject, new Object[] { dbUpdates2,
        new TransactionInfo(0, 0, timestamp + 1, 5) });

    Assert.assertEquals("NumSCNRegressions", 1, ggParserStats.getNumSCNRegressions());
    Assert.assertEquals("NumSCNRegressions", 5, ggParserStats.getLastRegressedScn());
    Assert.assertEquals("MaxScn", 10, ggParserStats.getMaxScn());

    // SCN = 6 No Regression here
    dbUpdates2 = generateUpdates(sourceIds, keys, 6);
    method.invoke(handleXmlCallbackObject, new Object[] { dbUpdates2,
        new TransactionInfo(0, 0, timestamp + 1, 6) });

    Assert.assertEquals("NumSCNRegressions", 1, ggParserStats.getNumSCNRegressions());
    Assert.assertEquals("NumSCNRegressions", 5, ggParserStats.getLastRegressedScn());
    Assert.assertEquals("MaxScn", 10, ggParserStats.getMaxScn());

    // SCN = 3 : SCN regression again
    dbUpdates2 = generateUpdates(sourceIds, keys, 3);
    method.invoke(handleXmlCallbackObject, new Object[] { dbUpdates2,
        new TransactionInfo(0, 0, timestamp + 1, 3) });

    Assert.assertEquals("NumSCNRegressions", 2, ggParserStats.getNumSCNRegressions());
    Assert.assertEquals("NumSCNRegressions", 3, ggParserStats.getLastRegressedScn());
    Assert.assertEquals("MaxScn", 10, ggParserStats.getMaxScn());

    // SCN = 11: No regression here
    dbUpdates2 = generateUpdates(sourceIds, keys, 11);
    method.invoke(handleXmlCallbackObject, new Object[] { dbUpdates2,
        new TransactionInfo(0, 0, timestamp + 1, 11) });

    Assert.assertEquals("NumSCNRegressions", 2, ggParserStats.getNumSCNRegressions());
    Assert.assertEquals("NumSCNRegressions", 3, ggParserStats.getLastRegressedScn());
    Assert.assertEquals("MaxScn", 11, ggParserStats.getMaxScn());
  }
View Full Code Here

Examples of com.linkedin.databus.monitoring.mbean.GGParserStatistics

      LOG.info("get parser stats for source " + psourceName);
    }

    List<String> phSourceNames = new ArrayList<String>();
    EventProducer [] prods = ((DatabusRelayMain)_relay).getProducers();
    GGParserStatistics stat = null;
    for(EventProducer prod : prods) {
      if (prod != null && (prod instanceof GoldenGateEventProducer)) {
        GoldenGateEventProducer ggProducer = (GoldenGateEventProducer)prod;
        String pSrcName = ggProducer.getParserStats().getPhysicalSourceName();
        phSourceNames.add(pSrcName);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.