/**
   * Tests that an instance of 'PersistenceIntOplogOffsetDiskId' is created when max-oplog-size (in
   * bytes) passed is smaller than Integer.MAX_VALUE
   */
  public void testOverflowIntDiskIdInstance() {
    int maxOplogSizeinMB = 2;

    DiskId diskId = DiskId.createDiskId(maxOplogSizeinMB, false /*is overflow type*/, true);
    assertTrue(
        "Instance of 'OverflowIntOplogOffsetDiskId' was not created though max oplog size (in bytes) was smaller than Integer.MAX_VALUE",
        DiskId.isInstanceofOverflowIntOplogOffsetDiskId(diskId));
  }
  /**
   * Tests that an instance of 'PersistenceIntOplogOffsetDiskId' is created when max-oplog-size (in
   * bytes) passed is smaller than Integer.MAX_VALUE
   */
  public void testPersistIntDiskIdInstance() {
    int maxOplogSizeinMB = 2;

    DiskId diskId = DiskId.createDiskId(maxOplogSizeinMB, true /*is persistence type*/, true);
    assertTrue(
        "Instance of 'PersistIntOplogOffsetDiskId' was not created though max oplog size (in bytes) was smaller than Integer.MAX_VALUE",
        DiskId.isInstanceofPersistIntOplogOffsetDiskId(diskId));
  }
  /**
   * Tests that an instance of 'LongOplogOffsetDiskId' is created when max-oplog-size (in bytes)
   * passed is greater than Integer.MAX_VALUE
   */
  public void testOverflowLongDiskIdInstance() {
    long maxOplogSizeInBytes = (long) Integer.MAX_VALUE + 1;
    int maxOplogSizeinMB = (int) (maxOplogSizeInBytes / (1024 * 1024));

    DiskId diskId = DiskId.createDiskId(maxOplogSizeinMB, false /* is overflow type */, true);
    assertTrue(
        "Instance of 'OverflowLongOplogOffsetDiskId' was not created though max oplog size (in bytes) was greater than Integer.MAX_VALUE",
        DiskId.isInstanceofOverflowOnlyWithLongOffset(diskId));
  }
  /**
   * Tests that an instance of 'LongOplogOffsetDiskId' is created when max-oplog-size (in bytes)
   * passed is greater than Integer.MAX_VALUE
   */
  public void testPersistLongDiskIdInstance() {
    long maxOplogSizeInBytes = (long) Integer.MAX_VALUE + 1;
    int maxOplogSizeinMB = (int) (maxOplogSizeInBytes / (1024 * 1024));

    DiskId diskId = DiskId.createDiskId(maxOplogSizeinMB, true /* is persistence type */, true);
    assertTrue(
        "Instance of 'PersistLongOplogOffsetDiskId' was not created though max oplog size (in bytes) was greater than Integer.MAX_VALUE",
        DiskId.isInstanceofPersistLongOplogOffsetDiskId(diskId));
  }
 /**
  * Test the getOplogId returns what has been set
  *
  * @throws Exception
  */
 public void testGetSetOplogId() throws Exception {
   DiskId did = getDiskId();
   did.setOplogId(-1);
   assertEquals(-1, did.getOplogId());
   did.setOplogId(0);
   assertEquals(0, did.getOplogId());
   did.setOplogId(1024);
   assertEquals(1024, did.getOplogId());
   did.setOplogId(-1024);
   assertEquals(-1024, did.getOplogId());
 }
 // DO NOT modify this class. It was generated from LeafRegionEntry.cpp
 private void diskInitialize(RegionEntryContext context, Object value) {
   DiskRecoveryStore drs = (DiskRecoveryStore) context;
   DiskStoreImpl ds = drs.getDiskStore();
   long maxOplogSize = ds.getMaxOplogSize();
   // get appropriate instance of DiskId implementation based on maxOplogSize
   this.id = DiskId.createDiskId(maxOplogSize, true /* is persistence */, ds.needsLinkedList());
   Helper.initialize(this, drs, value);
 }
 /**
  * Test the whether setting of one set of values does not affect another set of values
  *
  * @throws Exception
  */
 public void testAllOperationsValidatingResult1() {
   DiskId did = getDiskId();
   for (int i = -16777215; i < 16777215; i++) {
     boolean boolValuePerIteration = false;
     did.setOplogId(i);
     // set true for even, set false for odd
     switch ((i % 3)) {
       case 0:
         boolValuePerIteration = true;
         break;
       case 1:
       case 2:
         boolValuePerIteration = false;
         break;
     }
     byte userbits = 0;
     switch (i % 4) {
       case 0:
         break;
       case 1:
         did.setUserBits(EntryBits.setSerialized(userbits, boolValuePerIteration));
         break;
       case 2:
         did.setUserBits(EntryBits.setInvalid(userbits, boolValuePerIteration));
         break;
       case 3:
         did.setUserBits(EntryBits.setLocalInvalid(userbits, boolValuePerIteration));
         break;
     }
     assertEquals(did.getOplogId(), i);
     byte userBits2 = did.getUserBits();
     switch (i % 4) {
       case 0:
         break;
       case 1:
         assertEquals(EntryBits.isSerialized(userBits2), boolValuePerIteration);
         break;
       case 2:
         assertEquals(EntryBits.isInvalid(userBits2), boolValuePerIteration);
         break;
       case 3:
         assertEquals(EntryBits.isLocalInvalid(userBits2), boolValuePerIteration);
         break;
     }
   }
 }
 //  // inlining DiskId
 //  // always have these fields
 //  /**
 //   * id consists of
 //   * most significant
 //   * 1 byte = users bits
 //   * 2-8 bytes = oplog id
 //   * least significant.
 //   *
 //   * The highest bit in the oplog id part is set to 1 if the oplog id
 //   * is negative.
 //   * @todo this field could be an int for an overflow only region
 //   */
 //  private long id;
 //  /**
 //   * Length of the bytes on disk.
 //   * This is always set. If the value is invalid then it will be set to 0.
 //   * The most significant bit is used by overflow to mark it as needing to be written.
 //   */
 //  protected int valueLength = 0;
 //  // have intOffset or longOffset
 //  // intOffset
 //  /**
 //   * The position in the oplog (the oplog offset) where this entry's value is
 //   * stored
 //   */
 //  private volatile int offsetInOplog;
 //  // longOffset
 //  /**
 //   * The position in the oplog (the oplog offset) where this entry's value is
 //   * stored
 //   */
 //  private volatile long offsetInOplog;
 //  // have overflowOnly or persistence
 //  // overflowOnly
 //  // no fields
 //  // persistent
 //  /** unique entry identifier * */
 //  private long keyId;
 // DO NOT modify this class. It was generated from LeafRegionEntry.cpp
 // lru code
 @Override
 public void setDelayedDiskId(LocalRegion r) {
   DiskStoreImpl ds = r.getDiskStore();
   long maxOplogSize = ds.getMaxOplogSize();
   this.id = DiskId.createDiskId(maxOplogSize, false /* over flow only */, ds.needsLinkedList());
 }
  /**
   * Test the getUserbits returns what has been set
   *
   * @throws Exception
   */
  public void testGetSetUserBits() throws Exception {
    DiskId did = getDiskId();
    byte userBits = 0;
    userBits = EntryBits.setSerialized(userBits, true);
    did.setUserBits(userBits);
    assertEquals(userBits, did.getUserBits());
    userBits = EntryBits.setInvalid(userBits, true);
    did.setUserBits(userBits);
    assertEquals(userBits, did.getUserBits());
    userBits = EntryBits.setLocalInvalid(userBits, true);
    did.setUserBits(userBits);
    assertEquals(userBits, did.getUserBits());
    assertTrue(EntryBits.isSerialized(userBits));
    assertTrue(EntryBits.isInvalid(userBits));
    assertTrue(EntryBits.isLocalInvalid(userBits));
    userBits = EntryBits.setSerialized(userBits, false);
    did.setUserBits(userBits);
    assertEquals(userBits, did.getUserBits());
    userBits = EntryBits.setInvalid(userBits, false);
    did.setUserBits(userBits);
    assertEquals(userBits, did.getUserBits());
    userBits = EntryBits.setLocalInvalid(userBits, false);
    did.setUserBits(userBits);
    assertFalse(EntryBits.isSerialized(userBits));
    assertFalse(EntryBits.isInvalid(userBits));
    assertFalse(EntryBits.isLocalInvalid(userBits));

    userBits = 0x0;
    userBits = EntryBits.setSerialized(userBits, true);
    did.setUserBits(userBits);
    assertTrue(EntryBits.isSerialized(userBits));
    assertFalse(EntryBits.isInvalid(userBits));
    assertFalse(EntryBits.isLocalInvalid(userBits));

    userBits = 0x0;
    userBits = EntryBits.setInvalid(userBits, true);
    did.setUserBits(userBits);
    assertFalse(EntryBits.isSerialized(userBits));
    assertTrue(EntryBits.isInvalid(userBits));
    assertFalse(EntryBits.isLocalInvalid(userBits));

    userBits = 0x0;
    userBits = EntryBits.setLocalInvalid(userBits, true);
    did.setUserBits(userBits);
    assertFalse(EntryBits.isSerialized(userBits));
    assertFalse(EntryBits.isInvalid(userBits));
    assertTrue(EntryBits.isLocalInvalid(userBits));

    userBits = 0x0;
    userBits = EntryBits.setTombstone(userBits, true);
    userBits = EntryBits.setWithVersions(userBits, true);
    did.setUserBits(userBits);
    assertFalse(EntryBits.isLocalInvalid(userBits));
    assertFalse(EntryBits.isSerialized(userBits));
    assertFalse(EntryBits.isInvalid(userBits));
    assertTrue(EntryBits.isTombstone(userBits));
    assertTrue(EntryBits.isWithVersions(userBits));
  }
 private DiskId getDiskId() {
   return DiskId.createDiskId(1024, true /* is persistence type*/, true);
 }