blob: 6fd80d1f34f7a05882696bc6ddc2763c2a2271ae [file] [log] [blame]
package org.apache.helix;
/*
* 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.
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.testng.Assert;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
public class TestZNRecord {
@Test
public void testEquals() {
ZNRecord record1 = new ZNRecord("id");
record1.setSimpleField("k1", "v1");
record1.setMapField("m1", new HashMap<String, String>());
record1.getMapField("m1").put("k1", "v1");
record1.setListField("l1", new ArrayList<String>());
record1.getListField("l1").add("v1");
ZNRecord record2 = new ZNRecord("id");
record2.setSimpleField("k1", "v1");
record2.setMapField("m1", new HashMap<String, String>());
record2.getMapField("m1").put("k1", "v1");
record2.setListField("l1", new ArrayList<String>());
record2.getListField("l1").add("v1");
AssertJUnit.assertEquals(record1, record2);
record2.setSimpleField("k2", "v1");
AssertJUnit.assertNotSame(record1, record2);
}
@Test
public void testMerge() {
ZNRecord record = new ZNRecord("record1");
// set simple field
record.setSimpleField("simpleKey1", "simpleValue1");
// set list field
List<String> list1 = new ArrayList<String>();
list1.add("list1Value1");
list1.add("list1Value2");
record.setListField("listKey1", list1);
// set map field
Map<String, String> map1 = new HashMap<String, String>();
map1.put("map1Key1", "map1Value1");
record.setMapField("mapKey1", map1);
// System.out.println(record);
ZNRecord updateRecord = new ZNRecord("updateRecord");
// set simple field
updateRecord.setSimpleField("simpleKey2", "simpleValue2");
// set list field
List<String> newList1 = new ArrayList<String>();
newList1.add("list1Value1");
newList1.add("list1Value2");
newList1.add("list1NewValue1");
newList1.add("list1NewValue2");
updateRecord.setListField("listKey1", newList1);
List<String> list2 = new ArrayList<String>();
list2.add("list2Value1");
list2.add("list2Value2");
updateRecord.setListField("listKey2", list2);
// set map field
Map<String, String> newMap1 = new HashMap<String, String>();
newMap1.put("map1NewKey1", "map1NewValue1");
updateRecord.setMapField("mapKey1", newMap1);
Map<String, String> map2 = new HashMap<String, String>();
map2.put("map2Key1", "map2Value1");
updateRecord.setMapField("mapKey2", map2);
// System.out.println(updateRecord);
record.merge(updateRecord);
// System.out.println(record);
ZNRecord expectRecord = new ZNRecord("record1");
expectRecord.setSimpleField("simpleKey1", "simpleValue1");
expectRecord.setSimpleField("simpleKey2", "simpleValue2");
List<String> expectList1 = new ArrayList<String>();
expectList1.add("list1Value1");
expectList1.add("list1Value2");
expectList1.add("list1Value1");
expectList1.add("list1Value2");
expectList1.add("list1NewValue1");
expectList1.add("list1NewValue2");
expectRecord.setListField("listKey1", expectList1);
List<String> expectList2 = new ArrayList<String>();
expectList2.add("list2Value1");
expectList2.add("list2Value2");
expectRecord.setListField("listKey2", expectList2);
Map<String, String> expectMap1 = new HashMap<String, String>();
expectMap1.put("map1Key1", "map1Value1");
expectMap1.put("map1NewKey1", "map1NewValue1");
expectRecord.setMapField("mapKey1", expectMap1);
Map<String, String> expectMap2 = new HashMap<String, String>();
expectMap2.put("map2Key1", "map2Value1");
expectRecord.setMapField("mapKey2", expectMap2);
Assert.assertEquals(record, expectRecord, "Should be equal.");
}
}