You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluo.apache.org by kt...@apache.org on 2016/08/04 14:18:46 UTC
[3/3] incubator-fluo git commit: Merge branch 'fluo-746'
Merge branch 'fluo-746'
Project: http://git-wip-us.apache.org/repos/asf/incubator-fluo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fluo/commit/f8d0af6e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fluo/tree/f8d0af6e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fluo/diff/f8d0af6e
Branch: refs/heads/master
Commit: f8d0af6e92a58beebf2060416448a1f3ed138fe6
Parents: 5400971 aa36c88
Author: Keith Turner <ke...@deenlo.com>
Authored: Thu Aug 4 09:56:42 2016 -0400
Committer: Keith Turner <ke...@deenlo.com>
Committed: Thu Aug 4 09:56:42 2016 -0400
----------------------------------------------------------------------
.../fluo/accumulo/data/WriteUtilImpl.java | 36 ---
.../fluo/accumulo/util/ByteArrayUtil.java | 65 +++-
.../fluo/accumulo/util/NotificationUtil.java | 4 +-
.../apache/fluo/accumulo/values/LockValue.java | 6 +-
.../java/org/apache/fluo/api/data/Bytes.java | 307 ++++++++++++-------
.../org/apache/fluo/api/data/BytesBuilder.java | 133 --------
.../apache/fluo/api/data/BytesBuilderTest.java | 164 ++++++++++
.../org/apache/fluo/api/data/BytesTest.java | 171 +++++++++++
.../org/apache/fluo/api/data/ColumnTest.java | 122 ++++++++
.../org/apache/fluo/api/data/RowColumnTest.java | 86 ++++++
.../fluo/api/data/RowColumnValueTest.java | 87 ++++++
.../java/org/apache/fluo/api/data/SpanTest.java | 260 ++++++++++++++++
.../org/apache/fluo/core/util/ByteUtil.java | 19 ++
.../org/apache/fluo/core/util/ColumnUtil.java | 22 +-
.../apache/fluo/core/data/BytesBuilderTest.java | 131 --------
.../org/apache/fluo/core/data/BytesTest.java | 102 ------
.../org/apache/fluo/core/data/ColumnTest.java | 122 --------
.../apache/fluo/core/data/RowColumnTest.java | 86 ------
.../fluo/core/data/RowColumnValueTest.java | 87 ------
.../org/apache/fluo/core/data/SpanTest.java | 260 ----------------
.../org/apache/fluo/core/util/ByteUtilTest.java | 18 ++
21 files changed, 1196 insertions(+), 1092 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-fluo/blob/f8d0af6e/modules/api/src/test/java/org/apache/fluo/api/data/BytesTest.java
----------------------------------------------------------------------
diff --cc modules/api/src/test/java/org/apache/fluo/api/data/BytesTest.java
index 0000000,12acdcc..56c33f6
mode 000000,100644..100644
--- a/modules/api/src/test/java/org/apache/fluo/api/data/BytesTest.java
+++ b/modules/api/src/test/java/org/apache/fluo/api/data/BytesTest.java
@@@ -1,0 -1,163 +1,171 @@@
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+ package org.apache.fluo.api.data;
+
+ import java.io.ByteArrayOutputStream;
+ import java.io.IOException;
+ import java.nio.ByteBuffer;
+ import java.nio.ReadOnlyBufferException;
+ import java.nio.charset.StandardCharsets;
+ import java.util.Arrays;
+
+ import org.apache.fluo.api.data.Bytes;
+ import org.junit.Assert;
+ import org.junit.Test;
+
+ /**
+ * Unit test for {@link Bytes}
+ */
+ public class BytesTest {
+
+ @Test
+ public void testBytesWrap() {
+
+ String s1 = "test1";
+ Bytes b1 = Bytes.of(s1);
+ Assert.assertArrayEquals(s1.getBytes(), b1.toArray());
+ Assert.assertEquals(s1, b1.toString());
+
+ String s2 = "test2";
+ ByteBuffer bb = ByteBuffer.wrap(s2.getBytes());
+ Bytes b2 = Bytes.of(bb);
+ Assert.assertArrayEquals(s2.getBytes(), b2.toArray());
+ Assert.assertEquals(s2, b2.toString());
+
+ // call again to ensure that position was not changed by previous call
+ b2 = Bytes.of(bb);
+ Assert.assertArrayEquals(s2.getBytes(), b2.toArray());
+ Assert.assertEquals(s2, b2.toString());
+
+ String s3 = "test3";
+ Bytes b3 = Bytes.of(s3.getBytes());
+ Assert.assertArrayEquals(s3.getBytes(), b3.toArray());
+ Assert.assertEquals(s3, b3.toString());
+
+ String s4 = "test4";
+ byte[] d4 = s4.getBytes();
+ Bytes b4 = Bytes.of(d4, 0, d4.length);
+ Assert.assertArrayEquals(s4.getBytes(), b4.toArray());
+ Assert.assertEquals(s4, b4.toString());
+ }
+
+ @Test
+ public void testImmutable() {
+ byte[] d1 = Bytes.of("mydata").toArray();
+
+ Bytes imm = Bytes.of(d1);
+ Assert.assertNotSame(d1, imm.toArray());
+ }
+
+ @Test
++ public void testHashSubsequence() {
++ Bytes b1 = Bytes.of("abcde");
++ Bytes b2 = Bytes.of("cde");
++
++ Assert.assertEquals(b2.hashCode(), b1.subSequence(2, 5).hashCode());
++ }
++
++ @Test
+ public void testCompare() {
+ Bytes b1 = Bytes.of("a");
+ Bytes b2 = Bytes.of("b");
+ Bytes b3 = Bytes.of("a");
+ Assert.assertEquals(-1, b1.compareTo(b2));
+ Assert.assertEquals(1, b2.compareTo(b1));
+ Assert.assertEquals(0, b1.compareTo(b3));
+ Assert.assertEquals(1, b1.compareTo(Bytes.EMPTY));
+ }
+
+ @Test
+ public void testToByteBuffer() {
+ Bytes b1 = Bytes.of("fluofluo");
+ ByteBuffer buffer = b1.toByteBuffer();
+ Assert.assertFalse(buffer.hasArray());
+ Assert.assertEquals(buffer.remaining(), 8);
+
+ byte[] copy = new byte[8];
+ buffer.duplicate().get(copy);
+ Assert.assertEquals("fluofluo", new String(copy, StandardCharsets.UTF_8));
+
+ try {
+ buffer.put((byte) 6);
+ Assert.fail();
+ } catch (ReadOnlyBufferException e) {
+ }
+ }
+
+ @Test
+ public void testWrite() throws IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+ byte[] ba1 = "abc".getBytes(StandardCharsets.UTF_8);
+ Bytes little = Bytes.of(ba1);
+ byte[] ba2 = new byte[1024];
+ Arrays.fill(ba2, (byte) 42);
+ Bytes big = Bytes.of(ba2);
+
+ little.writeTo(out);
+ big.writeTo(out);
+
+ byte[] expected = new byte[ba1.length + ba2.length];
+ System.arraycopy(ba1, 0, expected, 0, ba1.length);
+ System.arraycopy(ba2, 0, expected, ba1.length, ba2.length);
+
+ Assert.assertArrayEquals(expected, out.toByteArray());
+ out.close();
+ }
+
+ @Test
+ public void testBounds() {
+ Bytes bytes = Bytes.of("abcdefg").subSequence(2, 5);
+ Assert.assertEquals("abcdefg".substring(2, 5), bytes.toString());
+ Assert.assertEquals('c', bytes.byteAt(0));
+ Assert.assertEquals('d', bytes.byteAt(1));
+ Assert.assertEquals('e', bytes.byteAt(2));
+
+ Assert.assertEquals("de", bytes.subSequence(1, 3).toString());
+
+ try {
+ bytes.byteAt(-1);
+ Assert.fail();
+ } catch (IndexOutOfBoundsException e) {
+ }
+
+ try {
+ bytes.byteAt(3);
+ Assert.fail();
+ } catch (IndexOutOfBoundsException e) {
+ }
+
+ try {
+ bytes.subSequence(-1, 2);
+ Assert.fail();
+ } catch (IndexOutOfBoundsException e) {
+ }
+
+ try {
+ bytes.subSequence(0, 5);
+ Assert.fail();
+ } catch (IndexOutOfBoundsException e) {
+ }
+
+ try {
+ bytes.subSequence(2, 1);
+ Assert.fail();
+ } catch (IndexOutOfBoundsException e) {
+ }
+ }
+ }
http://git-wip-us.apache.org/repos/asf/incubator-fluo/blob/f8d0af6e/modules/api/src/test/java/org/apache/fluo/api/data/RowColumnTest.java
----------------------------------------------------------------------
diff --cc modules/api/src/test/java/org/apache/fluo/api/data/RowColumnTest.java
index 0000000,f5b5fdb..85b5eb6
mode 000000,100644..100644
--- a/modules/api/src/test/java/org/apache/fluo/api/data/RowColumnTest.java
+++ b/modules/api/src/test/java/org/apache/fluo/api/data/RowColumnTest.java
@@@ -1,0 -1,86 +1,86 @@@
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+ package org.apache.fluo.api.data;
+
+ import org.apache.fluo.api.data.Bytes;
+ import org.apache.fluo.api.data.Column;
+ import org.apache.fluo.api.data.RowColumn;
+ import org.junit.Assert;
+ import org.junit.Test;
+
+ /**
+ * Unit test for {@link RowColumn}
+ */
+ public class RowColumnTest {
+
+ @Test
+ public void testBasic() {
+
+ RowColumn rc = new RowColumn();
+ Assert.assertEquals(RowColumn.EMPTY, rc);
+ Assert.assertEquals(Bytes.EMPTY, rc.getRow());
+ Assert.assertEquals("", rc.getsRow());
+ Assert.assertEquals(Column.EMPTY, rc.getColumn());
+ Assert.assertEquals(" ", rc.toString());
+ Assert.assertNotEquals(RowColumn.EMPTY, Column.EMPTY);
+
+ rc = new RowColumn(Bytes.of("r1"));
+ Assert.assertEquals(Bytes.of("r1"), rc.getRow());
+ Assert.assertEquals("r1", rc.getsRow());
+ Assert.assertEquals(Column.EMPTY, rc.getColumn());
+ Assert.assertEquals(new RowColumn("r1"), rc);
+ Assert.assertEquals("r1 ", rc.toString());
+
+ rc = new RowColumn("r2", new Column("cf2"));
+ Assert.assertEquals(Bytes.of("r2"), rc.getRow());
+ Assert.assertEquals("r2", rc.getsRow());
+ Assert.assertEquals(new Column("cf2"), rc.getColumn());
+ Assert.assertEquals(new RowColumn(Bytes.of("r2"), new Column("cf2")), rc);
+ Assert.assertEquals("r2 cf2 ", rc.toString());
- Assert.assertEquals(4007699, rc.hashCode());
++ Assert.assertEquals(123316141, rc.hashCode());
+ }
+
+ @Test
+ public void testFollowing() {
+ byte[] fdata = new String("data1").getBytes();
+ fdata[4] = (byte) 0x00;
+ Bytes fb = Bytes.of(fdata);
+
+ Assert.assertEquals(RowColumn.EMPTY, new RowColumn().following());
+ Assert.assertEquals(new RowColumn(fb), new RowColumn("data").following());
+ Assert.assertEquals(new RowColumn("row", new Column(fb)), new RowColumn("row", new Column(
+ "data")).following());
+ Assert.assertEquals(new RowColumn("row", new Column(Bytes.of("cf"), fb)), new RowColumn("row",
+ new Column("cf", "data")).following());
+ Assert.assertEquals(new RowColumn("row", new Column(Bytes.of("cf"), Bytes.of("cq"), fb)),
+ new RowColumn("row", new Column("cf", "cq", "data")).following());
+ }
+
+ @Test
+ public void testCompare() {
+ RowColumn rc1 = new RowColumn("a", new Column("b"));
+ RowColumn rc2 = new RowColumn("b");
+ RowColumn rc3 = new RowColumn("a", new Column("c"));
+ RowColumn rc4 = new RowColumn("a", new Column("c", "d"));
+ Assert.assertEquals(-1, rc1.compareTo(rc2));
+ Assert.assertEquals(1, rc2.compareTo(rc1));
+ Assert.assertEquals(-1, rc1.compareTo(rc3));
+ Assert.assertEquals(-1, rc3.compareTo(rc2));
+ Assert.assertEquals(0, rc3.compareTo(rc3));
+ Assert.assertEquals(1, rc2.compareTo(RowColumn.EMPTY));
+ Assert.assertEquals(-1, rc3.compareTo(rc4));
+ }
+ }