This is an automated email from the ASF dual-hosted git repository.
blerer pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/trunk by this push:
new d0cfd0d Fix ValueAccessorTest.testSlice flakiness
d0cfd0d is described below
commit d0cfd0d9d93b77718e7403c3372e27b25e955e60
Author: Benjamin Lerer <[email protected]>
AuthorDate: Mon Mar 15 13:37:31 2021 +0100
Fix ValueAccessorTest.testSlice flakiness
patch by Benjamin Lerer; reviewed by Andrés de la Peña and Berenguer Blasi
for CASSANDRA-16516
---
.../cassandra/db/marshal/ValueAccessorTest.java | 39 ++++++++++++++--------
1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/test/unit/org/apache/cassandra/db/marshal/ValueAccessorTest.java
b/test/unit/org/apache/cassandra/db/marshal/ValueAccessorTest.java
index d53d9c7..5a9760e 100644
--- a/test/unit/org/apache/cassandra/db/marshal/ValueAccessorTest.java
+++ b/test/unit/org/apache/cassandra/db/marshal/ValueAccessorTest.java
@@ -81,13 +81,13 @@ public class ValueAccessorTest extends ValueAccessorTester
.checkAssert(ValueAccessorTest::testHashCodeAndEquals);
}
- private static <V> void testSlice(ValueAccessor<V> accessor, byte[]
rawBytes, Slice slice, int padding)
+ private static <V> void testSlice(ValueAccessor<V> accessor,
ByteArraySlice slice, int padding)
{
- V value = leftPad(accessor.valueOf(rawBytes), padding);
+ V value = leftPad(accessor.valueOf(slice.originalArray), padding);
V s = accessor.slice(value, slice.offset, slice.length);
byte[] array = accessor.toArray(s);
- byte[] expected = Arrays.copyOfRange(rawBytes, slice.offset,
slice.offset + slice.length);
+ byte[] expected = slice.toArray();
Assert.assertArrayEquals(expected, array);
}
@@ -95,10 +95,8 @@ public class ValueAccessorTest extends ValueAccessorTester
public void testSlice()
{
qt().forAll(accessors(),
- byteArrays(integers().between(2, 200)),
- slices(integers().between(2, 100), integers().between(1,
30)),
+ slices(byteArrays(integers().between(2, 200))),
bbPadding())
- .assuming((a, r, s, p) -> s.isValidFor(r))
.checkAssert(ValueAccessorTest::testSlice);
}
@@ -220,14 +218,25 @@ public class ValueAccessorTest extends ValueAccessorTester
integers().between(0,
3)).checkAssert(ValueAccessorTest::testUnsignedShort);
}
- public static Gen<Slice> slices(Gen<Integer> offsets, Gen<Integer> lengths)
+ private static Gen<ByteArraySlice> slices(Gen<byte[]> arrayGen)
{
- return offsets.zip(lengths, (o, l) -> new Slice(o, l));
+ return td -> {
+ byte[] array = arrayGen.generate(td);
+ int arrayLength = array.length;
+ int offset = integers().between(0, arrayLength - 1).generate(td);
+ int length = integers().between(0, arrayLength - offset -
1).generate(td);
+ return new ByteArraySlice(array, offset, length);
+ };
}
- private static final class Slice
+ private static final class ByteArraySlice
{
/**
+ * The original array
+ */
+ final byte[] originalArray;
+
+ /**
* The slice offset;
*/
final int offset;
@@ -237,21 +246,25 @@ public class ValueAccessorTest extends ValueAccessorTester
*/
final int length;
- public Slice(int offset, int length)
+ public ByteArraySlice(byte[] bytes, int offset, int length)
{
+ this.originalArray = bytes;
this.offset = offset;
this.length = length;
}
- public boolean isValidFor(byte[] array)
+ /**
+ * Returns the silce as a byte array.
+ */
+ public byte[] toArray()
{
- return offset < array.length && offset + length < array.length;
+ return Arrays.copyOfRange(originalArray, offset, offset + length);
}
@Override
public String toString()
{
- return "Slice [offset=" + offset + ", length=" + length + "]";
+ return "Byte Array Slice [array=" + Arrays.toString(originalArray)
+ ", offset=" + offset + ", length=" + length + "]";
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]