Fix incorrect compareAndPut behaviour for Noop
The Noop implementation should always consider ref up-to-date.
Returning false from compareAndPut() would cause ref-update commands to
be invalidated before actually being executed.
Fix one of the Noop implementations of compareAndPut(), which was
erroneously returning false, and thus never considering the ref
up-to-date.
Change-Id: Icd4f5a5bb01ee006b76617a7b5f486f951393ae1
diff --git a/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabase.java b/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabase.java
index 2a0f972..960b311 100644
--- a/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabase.java
+++ b/src/main/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabase.java
@@ -60,20 +60,20 @@
}
/**
- * Put is always considered unsuccessful
+ * Put is always considered successful
*
* @param project project name of the ref.
* @param refName to store the value for.
* @param currValue current expected value in the DB.
* @param newValue new value to store.
* @param <T> Type of the current and new value
- * @return false
+ * @return true
* @throws GlobalRefDbSystemError Never thrown by this implementation
*/
@Override
public <T> boolean compareAndPut(Project.NameKey project, String refName, T currValue, T newValue)
throws GlobalRefDbSystemError {
- return false;
+ return true;
}
/**
diff --git a/src/test/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabaseTest.java b/src/test/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabaseTest.java
index bc1435c..8c749ea 100644
--- a/src/test/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabaseTest.java
+++ b/src/test/java/com/gerritforge/gerrit/globalrefdb/validation/dfsrefdb/NoopSharedRefDatabaseTest.java
@@ -36,6 +36,14 @@
}
@Test
+ public void compareAndPutWithRefNameShouldAlwaysReturnTrue() {
+ assertThat(
+ objectUnderTest.compareAndPut(
+ A_TEST_PROJECT_NAME_KEY, A_TEST_REF_NAME, AN_OBJECT_ID_1, AN_OBJECT_ID_2))
+ .isTrue();
+ }
+
+ @Test
public void existsShouldAlwaysReturnFalse() {
assertThat(objectUnderTest.exists(A_TEST_PROJECT_NAME_KEY, A_TEST_REF_NAME)).isFalse();
}