/// <summary> /// Test that capacity metrics are exported and pass /// basic sanity tests. /// </summary> /// <exception cref="System.Exception"/> public virtual void TestCapacityMetrics() { MetricsRecordBuilder rb = MetricsAsserts.GetMetrics(NsMetrics); long capacityTotal = MetricsAsserts.GetLongGauge("CapacityTotal", rb); System.Diagnostics.Debug.Assert((capacityTotal != 0)); long capacityUsed = MetricsAsserts.GetLongGauge("CapacityUsed", rb); long capacityRemaining = MetricsAsserts.GetLongGauge("CapacityRemaining", rb); long capacityUsedNonDFS = MetricsAsserts.GetLongGauge("CapacityUsedNonDFS", rb); System.Diagnostics.Debug.Assert((capacityUsed + capacityRemaining + capacityUsedNonDFS == capacityTotal)); }
public virtual void TestTransactionAndCheckpointMetrics() { long lastCkptTime = MetricsAsserts.GetLongGauge("LastCheckpointTime", MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("LastCheckpointTime", lastCkptTime, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("LastWrittenTransactionId", 1L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastCheckpoint", 1L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastLogRoll", 1L, MetricsAsserts.GetMetrics (NsMetrics)); fs.Mkdirs(new Path(TestRootDirPath, "/tmp")); UpdateMetrics(); MetricsAsserts.AssertGauge("LastCheckpointTime", lastCkptTime, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("LastWrittenTransactionId", 2L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastCheckpoint", 2L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastLogRoll", 2L, MetricsAsserts.GetMetrics (NsMetrics)); cluster.GetNameNodeRpc().RollEditLog(); UpdateMetrics(); MetricsAsserts.AssertGauge("LastCheckpointTime", lastCkptTime, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("LastWrittenTransactionId", 4L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastCheckpoint", 4L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastLogRoll", 1L, MetricsAsserts.GetMetrics (NsMetrics)); cluster.GetNameNodeRpc().SetSafeMode(HdfsConstants.SafeModeAction.SafemodeEnter, false); cluster.GetNameNodeRpc().SaveNamespace(); cluster.GetNameNodeRpc().SetSafeMode(HdfsConstants.SafeModeAction.SafemodeLeave, false); UpdateMetrics(); long newLastCkptTime = MetricsAsserts.GetLongGauge("LastCheckpointTime", MetricsAsserts.GetMetrics (NsMetrics)); NUnit.Framework.Assert.IsTrue(lastCkptTime < newLastCkptTime); MetricsAsserts.AssertGauge("LastWrittenTransactionId", 6L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastCheckpoint", 1L, MetricsAsserts.GetMetrics (NsMetrics)); MetricsAsserts.AssertGauge("TransactionsSinceLastLogRoll", 1L, MetricsAsserts.GetMetrics (NsMetrics)); }
/// <summary> /// Wait for the named gauge value from the metrics source to reach the /// desired value. /// </summary> /// <remarks> /// Wait for the named gauge value from the metrics source to reach the /// desired value. /// There's an initial delay then a spin cycle of sleep and poll. Because /// all the tests use a shared FS instance, these tests are not independent; /// that's why the initial sleep is in there. /// </remarks> /// <param name="source">metrics source</param> /// <param name="name">gauge name</param> /// <param name="expected">expected value</param> /// <returns>the last metrics record polled</returns> /// <exception cref="System.Exception">if something went wrong.</exception> private MetricsRecordBuilder WaitForDnMetricValue(string source, string name, long expected) { MetricsRecordBuilder rb; long gauge; //initial wait. WaitForDeletion(); //lots of retries are allowed for slow systems; fast ones will still //exit early int retries = (DatanodeCount + 1) * WaitGaugeValueRetries; rb = MetricsAsserts.GetMetrics(source); gauge = MetricsAsserts.GetLongGauge(name, rb); while (gauge != expected && (--retries > 0)) { Sharpen.Thread.Sleep(DfsReplicationInterval * 500); rb = MetricsAsserts.GetMetrics(source); gauge = MetricsAsserts.GetLongGauge(name, rb); } //at this point the assertion is valid or the retry count ran out MetricsAsserts.AssertGauge(name, expected, rb); return(rb); }