public void can_get_and_decrement() { _num.SetValue(10); _num.GetAndDecrement().Should().Be(10); _num.GetValue().Should().Be(9); _num.GetAndDecrement(5).Should().Be(9); _num.GetValue().Should().Be(4); }
public void test04() { var a = new AtomicInteger(1); Assert.AreEqual(1, a.GetAndDecrement()); Assert.AreEqual(0, a.Value); }
/// <summary>Delete a snapshot for a snapshottable directory</summary> /// <param name="snapshotName">Name of the snapshot to be deleted</param> /// <param name="collectedBlocks">Used to collect information to update blocksMap</param> /// <exception cref="System.IO.IOException"/> public virtual void DeleteSnapshot(INodesInPath iip, string snapshotName, INode.BlocksMapUpdateInfo collectedBlocks, IList <INode> removedINodes) { INodeDirectory srcRoot = GetSnapshottableRoot(iip); srcRoot.RemoveSnapshot(fsdir.GetBlockStoragePolicySuite(), snapshotName, collectedBlocks , removedINodes); numSnapshots.GetAndDecrement(); }
public override void Run() { DirectoryReader reader = null; bool success = false; try { Random random = Random(); while (NumUpdates.GetAndDecrement() > 0) { double group = random.NextDouble(); Term t; if (group < 0.1) { t = new Term("updKey", "g0"); } else if (group < 0.5) { t = new Term("updKey", "g1"); } else if (group < 0.8) { t = new Term("updKey", "g2"); } else { t = new Term("updKey", "g3"); } // System.out.println("[" + Thread.currentThread().getName() + "] numUpdates=" + numUpdates + " updateTerm=" + t); if (random.NextBoolean()) // sometimes unset a value { // System.err.println("[" + Thread.currentThread().getName() + "] t=" + t + ", f=" + f + ", updValue=UNSET"); Writer.UpdateBinaryDocValue(t, f, null); Writer.UpdateNumericDocValue(t, Cf, null); } else { long updValue = random.Next(); // System.err.println("[" + Thread.currentThread().getName() + "] t=" + t + ", f=" + f + ", updValue=" + updValue); Writer.UpdateBinaryDocValue(t, f, TestBinaryDocValuesUpdates.ToBytes(updValue)); Writer.UpdateNumericDocValue(t, Cf, updValue * 2); } if (random.NextDouble() < 0.2) { // delete a random document int doc = random.Next(NumDocs); // System.out.println("[" + Thread.currentThread().getName() + "] deleteDoc=doc" + doc); Writer.DeleteDocuments(new Term("id", "doc" + doc)); } if (random.NextDouble() < 0.05) // commit every 20 updates on average { // System.out.println("[" + Thread.currentThread().getName() + "] commit"); Writer.Commit(); } if (random.NextDouble() < 0.1) // reopen NRT reader (apply updates), on average once every 10 updates { if (reader == null) { // System.out.println("[" + Thread.currentThread().getName() + "] open NRT"); reader = DirectoryReader.Open(Writer, true); } else { // System.out.println("[" + Thread.currentThread().getName() + "] reopen NRT"); DirectoryReader r2 = DirectoryReader.OpenIfChanged(reader, Writer, true); if (r2 != null) { reader.Dispose(); reader = r2; } } } } // System.out.println("[" + Thread.currentThread().getName() + "] DONE"); success = true; } catch (IOException e) { throw new Exception(e.Message, e); } finally { if (reader != null) { try { reader.Dispose(); } catch (IOException e) { if (success) // suppress this exception only if there was another exception { throw new Exception(e.Message, e); } } } Done.countDown(); } }