diff --git a/common/src/main/java/tachyon/test/Tester.java b/common/src/main/java/tachyon/test/Tester.java
index a2130e529215..05c9f3d1bebf 100644
--- a/common/src/main/java/tachyon/test/Tester.java
+++ b/common/src/main/java/tachyon/test/Tester.java
@@ -19,24 +19,21 @@
* This interface should be implemented by test classes that want to gain access to private members
* of classes they test. The tested classes should in turn implement the {@link Testable} interface.
*
- * The idiomatic use of this pattern is for the test class to encapsulate the granted access in an
- * inner class:
+ * The idiomatic use of this pattern is for the test class to capture the access object in a private
+ * member:
*
*
- * public class FooTest {
- * class FooTester implements Tester$lt;Foo$gt; {
- * Foo.PrivateAccess mPrivateAccess;
+ * public class FooTest implements Tester$lt;Foo$gt; {
+ * Foo.PrivateAccess mPrivateAccess;
*
- * public void receiveAccess(Object access) { mPrivateAccess = (Foo.PrivateAccess) access; }
- * }
+ * public void receiveAccess(Object access) { mPrivateAccess = (Foo.PrivateAccess) access; }
*
* @Test
* public void SecretTest() {
* Foo foo = new Foo();
- * FooTester fooTester = new Tester();
- * foo.grantAccess(fooTester);
- * fooTester.mPrivateAccess.setSecret(10);
- * Assert.equals(fooTester.mPrivateAccess.getSecret(), 10);
+ * foo.grantAccess(this);
+ * mPrivateAccess.setSecret(10);
+ * Assert.equals(mPrivateAccess.getSecret(), 10);
* }
* }
*
diff --git a/servers/src/test/java/tachyon/worker/block/BlockDataManagerTest.java b/servers/src/test/java/tachyon/worker/block/BlockDataManagerTest.java
index 083119fc8a47..8f484f088f7e 100644
--- a/servers/src/test/java/tachyon/worker/block/BlockDataManagerTest.java
+++ b/servers/src/test/java/tachyon/worker/block/BlockDataManagerTest.java
@@ -21,6 +21,7 @@
import java.util.Random;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
@@ -38,13 +39,12 @@
import tachyon.worker.block.meta.StorageDir;
import tachyon.worker.block.meta.TempBlockMeta;
-public class BlockDataManagerTest {
- class BlockDataManagerTester implements Tester {
- BlockDataManager.PrivateAccess mPrivateAccess;
+public class BlockDataManagerTest implements Tester {
+ TestHarness mHarness;
+ BlockDataManager.PrivateAccess mPrivateAccess;
- public void receiveAccess(Object access) {
- mPrivateAccess = (BlockDataManager.PrivateAccess) access;
- }
+ public void receiveAccess(Object access) {
+ mPrivateAccess = (BlockDataManager.PrivateAccess) access;
}
class TestHarness {
@@ -57,7 +57,6 @@ class TestHarness {
Random mRandom;
Sessions mSessions;
TachyonConf mTachyonConf;
- BlockDataManagerTester mTester;
UnderFileSystem mUfs;
long mWorkerId;
WorkerSource mWorkerSource;
@@ -80,40 +79,41 @@ public TestHarness() throws IOException {
mManager.setSessions(mSessions);
mManager.setWorkerId(mWorkerId);
- mTester = new BlockDataManagerTester();
- mManager.grantAccess(mTester);
- mTester.mPrivateAccess.setBlockStore(mBlockStore);
- mTester.mPrivateAccess.setHeartbeatReporter(mHeartbeatReporter);
- mTester.mPrivateAccess.setMetricsReporter(mMetricsReporter);
- mTester.mPrivateAccess.setTachyonConf(mTachyonConf);
- mTester.mPrivateAccess.setUnderFileSystem(mUfs);
+ mManager.grantAccess(BlockDataManagerTest.this); // initializes mPrivateAccess
+ mPrivateAccess.setBlockStore(mBlockStore);
+ mPrivateAccess.setHeartbeatReporter(mHeartbeatReporter);
+ mPrivateAccess.setMetricsReporter(mMetricsReporter);
+ mPrivateAccess.setTachyonConf(mTachyonConf);
+ mPrivateAccess.setUnderFileSystem(mUfs);
}
}
+ @Before
+ public void initialize() throws IOException {
+ mHarness = new TestHarness();
+ }
+
@Test
- public void AbortBlockTest() throws Exception {
- TestHarness harness = new TestHarness();
- long blockId = harness.mRandom.nextLong();
- long sessionId = harness.mRandom.nextLong();
- harness.mManager.abortBlock(sessionId, blockId);
- Mockito.verify(harness.mBlockStore).abortBlock(sessionId, blockId);
+ public void abortBlockTest() throws Exception {
+ long blockId = mHarness.mRandom.nextLong();
+ long sessionId = mHarness.mRandom.nextLong();
+ mHarness.mManager.abortBlock(sessionId, blockId);
+ Mockito.verify(mHarness.mBlockStore).abortBlock(sessionId, blockId);
}
@Test
- public void AccessBlockTest() throws Exception {
- TestHarness harness = new TestHarness();
- long blockId = harness.mRandom.nextLong();
- long sessionId = harness.mRandom.nextLong();
- harness.mManager.accessBlock(sessionId, blockId);
- Mockito.verify(harness.mBlockStore).accessBlock(sessionId, blockId);
+ public void accessBlockTest() throws Exception {
+ long blockId = mHarness.mRandom.nextLong();
+ long sessionId = mHarness.mRandom.nextLong();
+ mHarness.mManager.accessBlock(sessionId, blockId);
+ Mockito.verify(mHarness.mBlockStore).accessBlock(sessionId, blockId);
}
@Test
- public void AddCheckpointTest() throws Exception {
- TestHarness harness = new TestHarness();
- long fileId = harness.mRandom.nextLong();
- long fileSize = harness.mRandom.nextLong();
- long sessionId = harness.mRandom.nextLong();
+ public void addCheckpointTest() throws Exception {
+ long fileId = mHarness.mRandom.nextLong();
+ long fileSize = mHarness.mRandom.nextLong();
+ long sessionId = mHarness.mRandom.nextLong();
FileInfo fileInfo = new FileInfo();
fileInfo.setPath("/foo/bar");
String srcPath = "/tmp/" + fileId;
@@ -121,40 +121,38 @@ public void AddCheckpointTest() throws Exception {
String dstPath = "/tmp/foo/bar";
// TODO(jsimsa): Add test cases for error cases.
- Mockito.when(harness.mTachyonConf
+ Mockito.when(mHarness.mTachyonConf
.get(Constants.UNDERFS_DATA_FOLDER, Constants.DEFAULT_DATA_FOLDER)).thenReturn("/tmp");
- Mockito.when(harness.mSessions.getSessionUfsTempFolder(sessionId)).thenReturn("/tmp");
- Mockito.when(harness.mFileSystemMasterClient.getFileInfo(fileId)).thenReturn(fileInfo);
- Mockito.when(harness.mUfs.exists(parentPath)).thenReturn(true);
- Mockito.when(harness.mUfs.mkdirs(parentPath, true)).thenReturn(true);
- Mockito.when(harness.mUfs.rename(srcPath, dstPath)).thenReturn(true);
- Mockito.when(harness.mUfs.getFileSize(dstPath)).thenReturn(fileSize);
- harness.mManager.addCheckpoint(sessionId, fileId);
- Mockito.verify(harness.mFileSystemMasterClient)
- .addCheckpoint(harness.mWorkerId, fileId, fileSize, dstPath);
+ Mockito.when(mHarness.mSessions.getSessionUfsTempFolder(sessionId)).thenReturn("/tmp");
+ Mockito.when(mHarness.mFileSystemMasterClient.getFileInfo(fileId)).thenReturn(fileInfo);
+ Mockito.when(mHarness.mUfs.exists(parentPath)).thenReturn(true);
+ Mockito.when(mHarness.mUfs.mkdirs(parentPath, true)).thenReturn(true);
+ Mockito.when(mHarness.mUfs.rename(srcPath, dstPath)).thenReturn(true);
+ Mockito.when(mHarness.mUfs.getFileSize(dstPath)).thenReturn(fileSize);
+ mHarness.mManager.addCheckpoint(sessionId, fileId);
+ Mockito.verify(mHarness.mFileSystemMasterClient)
+ .addCheckpoint(mHarness.mWorkerId, fileId, fileSize, dstPath);
}
@Test
- public void CleanupSessionsTest() throws Exception {
- TestHarness harness = new TestHarness();
+ public void cleanupSessionsTest() throws Exception {
long sessionId = 1;
LinkedList sessions = new LinkedList();
sessions.add(sessionId);
- Mockito.when(harness.mSessions.getTimedOutSessions()).thenReturn(sessions);
- harness.mManager.cleanupSessions();
- Mockito.verify(harness.mSessions).removeSession(sessionId);
- Mockito.verify(harness.mBlockStore).cleanupSession(sessionId);
+ Mockito.when(mHarness.mSessions.getTimedOutSessions()).thenReturn(sessions);
+ mHarness.mManager.cleanupSessions();
+ Mockito.verify(mHarness.mSessions).removeSession(sessionId);
+ Mockito.verify(mHarness.mBlockStore).cleanupSession(sessionId);
}
@Test
- public void CommitBlockTest() throws Exception {
- TestHarness harness = new TestHarness();
- long blockId = harness.mRandom.nextLong();
- long length = harness.mRandom.nextLong();
- long lockId = harness.mRandom.nextLong();
- long sessionId = harness.mRandom.nextLong();
- long usedBytes = harness.mRandom.nextLong();
+ public void commitBlockTest() throws Exception {
+ long blockId = mHarness.mRandom.nextLong();
+ long length = mHarness.mRandom.nextLong();
+ long lockId = mHarness.mRandom.nextLong();
+ long sessionId = mHarness.mRandom.nextLong();
+ long usedBytes = mHarness.mRandom.nextLong();
int tierAlias = 1;
LinkedList usedBytesOnTiers = new LinkedList();
usedBytesOnTiers.add(usedBytes);
@@ -162,38 +160,37 @@ public void CommitBlockTest() throws Exception {
BlockStoreLocation blockStoreLocation = Mockito.mock(BlockStoreLocation.class);
BlockStoreMeta blockStoreMeta = Mockito.mock(BlockStoreMeta.class);
- Mockito.when(harness.mBlockStore.lockBlock(sessionId, blockId)).thenReturn(lockId);
- Mockito.when(harness.mBlockStore.getBlockMeta(sessionId, blockId, lockId))
+ Mockito.when(mHarness.mBlockStore.lockBlock(sessionId, blockId)).thenReturn(lockId);
+ Mockito.when(mHarness.mBlockStore.getBlockMeta(sessionId, blockId, lockId))
.thenReturn(blockMeta);
- Mockito.when(harness.mBlockStore.getBlockStoreMeta()).thenReturn(blockStoreMeta);
+ Mockito.when(mHarness.mBlockStore.getBlockStoreMeta()).thenReturn(blockStoreMeta);
Mockito.when(blockMeta.getBlockLocation()).thenReturn(blockStoreLocation);
Mockito.when(blockStoreLocation.tierAlias()).thenReturn(tierAlias);
Mockito.when(blockMeta.getBlockSize()).thenReturn(length);
Mockito.when(blockStoreMeta.getUsedBytesOnTiers()).thenReturn(usedBytesOnTiers);
- harness.mManager.commitBlock(sessionId, blockId);
- Mockito.verify(harness.mBlockMasterClient)
- .workerCommitBlock(harness.mWorkerId, usedBytes, tierAlias, blockId, length);
- Mockito.verify(harness.mBlockStore).unlockBlock(lockId);
+ mHarness.mManager.commitBlock(sessionId, blockId);
+ Mockito.verify(mHarness.mBlockMasterClient)
+ .workerCommitBlock(mHarness.mWorkerId, usedBytes, tierAlias, blockId, length);
+ Mockito.verify(mHarness.mBlockStore).unlockBlock(lockId);
}
@Test
public void CreateBlockTest() throws Exception {
- TestHarness harness = new TestHarness();
- long blockId = harness.mRandom.nextLong();
- long initialBytes = harness.mRandom.nextLong();
- long sessionId = harness.mRandom.nextLong();
+ long blockId = mHarness.mRandom.nextLong();
+ long initialBytes = mHarness.mRandom.nextLong();
+ long sessionId = mHarness.mRandom.nextLong();
int tierAlias = 1;
BlockStoreLocation location = BlockStoreLocation.anyDirInTier(tierAlias);
StorageDir storageDir = Mockito.mock(StorageDir.class);
TempBlockMeta meta = new TempBlockMeta(sessionId, blockId, initialBytes, storageDir);
- Mockito.when(harness.mBlockStore
+ Mockito.when(mHarness.mBlockStore
.createBlockMeta(sessionId, blockId, location, initialBytes)).thenReturn(meta);
Mockito.when(storageDir.getDirPath()).thenReturn("/tmp");
Assert.assertEquals(PathUtils.concatPath("/tmp", sessionId, blockId),
- harness.mManager.createBlock(sessionId, blockId, tierAlias, initialBytes));
+ mHarness.mManager.createBlock(sessionId, blockId, tierAlias, initialBytes));
}
// TODO(jsimsa): Write unit tests for untested public methods.
-}
\ No newline at end of file
+}