001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hbase.client;
019
020import static org.junit.jupiter.api.Assertions.assertEquals;
021import static org.junit.jupiter.api.Assertions.assertNull;
022import static org.junit.jupiter.api.Assertions.assertTrue;
023
024import java.util.Arrays;
025import org.apache.hadoop.hbase.testclassification.ClientTests;
026import org.apache.hadoop.hbase.testclassification.SmallTests;
027import org.apache.hadoop.hbase.util.Bytes;
028import org.junit.jupiter.api.Tag;
029import org.junit.jupiter.api.Test;
030
031@Tag(ClientTests.TAG)
032@Tag(SmallTests.TAG)
033public class TestAttributes {
034
035  private static final byte[] ROW = new byte[] { 'r' };
036
037  @Test
038  public void testPutAttributes() {
039    Put put = new Put(ROW);
040    assertTrue(put.getAttributesMap().isEmpty());
041    assertNull(put.getAttribute("absent"));
042
043    put.setAttribute("absent", null);
044    assertTrue(put.getAttributesMap().isEmpty());
045    assertNull(put.getAttribute("absent"));
046
047    // adding attribute
048    put.setAttribute("attribute1", Bytes.toBytes("value1"));
049    assertTrue(Arrays.equals(Bytes.toBytes("value1"), put.getAttribute("attribute1")));
050    assertEquals(1, put.getAttributesMap().size());
051    assertTrue(Arrays.equals(Bytes.toBytes("value1"), put.getAttributesMap().get("attribute1")));
052
053    // overriding attribute value
054    put.setAttribute("attribute1", Bytes.toBytes("value12"));
055    assertTrue(Arrays.equals(Bytes.toBytes("value12"), put.getAttribute("attribute1")));
056    assertEquals(1, put.getAttributesMap().size());
057    assertTrue(Arrays.equals(Bytes.toBytes("value12"), put.getAttributesMap().get("attribute1")));
058
059    // adding another attribute
060    put.setAttribute("attribute2", Bytes.toBytes("value2"));
061    assertTrue(Arrays.equals(Bytes.toBytes("value2"), put.getAttribute("attribute2")));
062    assertEquals(2, put.getAttributesMap().size());
063    assertTrue(Arrays.equals(Bytes.toBytes("value2"), put.getAttributesMap().get("attribute2")));
064
065    // removing attribute
066    put.setAttribute("attribute2", null);
067    assertNull(put.getAttribute("attribute2"));
068    assertEquals(1, put.getAttributesMap().size());
069    assertNull(put.getAttributesMap().get("attribute2"));
070
071    // removing non-existed attribute
072    put.setAttribute("attribute2", null);
073    assertNull(put.getAttribute("attribute2"));
074    assertEquals(1, put.getAttributesMap().size());
075    assertNull(put.getAttributesMap().get("attribute2"));
076
077    // removing another attribute
078    put.setAttribute("attribute1", null);
079    assertNull(put.getAttribute("attribute1"));
080    assertTrue(put.getAttributesMap().isEmpty());
081    assertNull(put.getAttributesMap().get("attribute1"));
082  }
083
084  @Test
085  public void testDeleteAttributes() {
086    Delete del = new Delete(new byte[] { 'r' });
087    assertTrue(del.getAttributesMap().isEmpty());
088    assertNull(del.getAttribute("absent"));
089
090    del.setAttribute("absent", null);
091    assertTrue(del.getAttributesMap().isEmpty());
092    assertNull(del.getAttribute("absent"));
093
094    // adding attribute
095    del.setAttribute("attribute1", Bytes.toBytes("value1"));
096    assertTrue(Arrays.equals(Bytes.toBytes("value1"), del.getAttribute("attribute1")));
097    assertEquals(1, del.getAttributesMap().size());
098    assertTrue(Arrays.equals(Bytes.toBytes("value1"), del.getAttributesMap().get("attribute1")));
099
100    // overriding attribute value
101    del.setAttribute("attribute1", Bytes.toBytes("value12"));
102    assertTrue(Arrays.equals(Bytes.toBytes("value12"), del.getAttribute("attribute1")));
103    assertEquals(1, del.getAttributesMap().size());
104    assertTrue(Arrays.equals(Bytes.toBytes("value12"), del.getAttributesMap().get("attribute1")));
105
106    // adding another attribute
107    del.setAttribute("attribute2", Bytes.toBytes("value2"));
108    assertTrue(Arrays.equals(Bytes.toBytes("value2"), del.getAttribute("attribute2")));
109    assertEquals(2, del.getAttributesMap().size());
110    assertTrue(Arrays.equals(Bytes.toBytes("value2"), del.getAttributesMap().get("attribute2")));
111
112    // removing attribute
113    del.setAttribute("attribute2", null);
114    assertNull(del.getAttribute("attribute2"));
115    assertEquals(1, del.getAttributesMap().size());
116    assertNull(del.getAttributesMap().get("attribute2"));
117
118    // removing non-existed attribute
119    del.setAttribute("attribute2", null);
120    assertNull(del.getAttribute("attribute2"));
121    assertEquals(1, del.getAttributesMap().size());
122    assertNull(del.getAttributesMap().get("attribute2"));
123
124    // removing another attribute
125    del.setAttribute("attribute1", null);
126    assertNull(del.getAttribute("attribute1"));
127    assertTrue(del.getAttributesMap().isEmpty());
128    assertNull(del.getAttributesMap().get("attribute1"));
129  }
130
131  @Test
132  public void testGetId() {
133    Get get = new Get(ROW);
134    assertNull(get.toMap().get("id"), "Make sure id is null if unset");
135    get.setId("myId");
136    assertEquals("myId", get.toMap().get("id"));
137  }
138
139  @Test
140  public void testAppendId() {
141    Append append = new Append(ROW);
142    assertNull(append.toMap().get("id"), "Make sure id is null if unset");
143    append.setId("myId");
144    assertEquals("myId", append.toMap().get("id"));
145  }
146
147  @Test
148  public void testDeleteId() {
149    Delete delete = new Delete(ROW);
150    assertNull(delete.toMap().get("id"), "Make sure id is null if unset");
151    delete.setId("myId");
152    assertEquals("myId", delete.toMap().get("id"));
153  }
154
155  @Test
156  public void testPutId() {
157    Put put = new Put(ROW);
158    assertNull(put.toMap().get("id"), "Make sure id is null if unset");
159    put.setId("myId");
160    assertEquals("myId", put.toMap().get("id"));
161  }
162
163  @Test
164  public void testScanId() {
165    Scan scan = new Scan();
166    assertNull(scan.toMap().get("id"), "Make sure id is null if unset");
167    scan.setId("myId");
168    assertEquals("myId", scan.toMap().get("id"));
169  }
170}