blob: 51c0508e4bdebdf7e4df89aa9700d8933be71365 [file] [log] [blame]
/*
* 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.geode.management.internal.cli.functions;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.CacheFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionFactory;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.internal.cli.domain.DataCommandResult;
public class Geode3544JUnitTest {
private static Cache cache;
private static Region region1;
private static final String PARTITIONED_REGION = "emp_region";
private static String emp_key;
static class EmpProfile implements Serializable {
private static final long serialVersionUID = 1L;
private long data;
public EmpProfile() {
}
public EmpProfile(long in_data) {
this.data = in_data;
}
public long getData() {
return data;
}
public void setData(long data) {
this.data = data;
}
}
public static class EmpData extends EmpProfile {
private short empId;
private Integer empNumber;
private long empAccount;
public EmpData() {
super();
}
public EmpData(long in_data, short in_empId, Integer in_empNumber, long in_empAccount) {
super(in_data);
this.empId = in_empId;
this.empNumber = in_empNumber;
this.empAccount = in_empAccount;
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (other instanceof EmpData) {
return this.getEmpId() == (((EmpData) other).getEmpId());
}
return true;
}
@Override
public String toString() {
return "data:" + getData() + "," + "empId" + getEmpId();
}
public short getEmpId() {
return empId;
}
public void setEmpId(short empId) {
this.empId = empId;
}
public Integer getEmpNumber() {
return empNumber;
}
public void setEmpNumber(Integer empNumber) {
this.empNumber = empNumber;
}
public long getEmpAccount() {
return empAccount;
}
public void setEmpAccount(long empAccount) {
this.empAccount = empAccount;
}
@Override
public int hashCode() {
return Objects.hash(empAccount, empNumber, empId);
}
}
@BeforeClass
public static void setUp() throws Exception {
cache = new CacheFactory().set(MCAST_PORT, "0").create();
RegionFactory factory = cache.createRegionFactory(RegionShortcut.PARTITION);
region1 = factory.create(PARTITIONED_REGION);
EmpData emp_data_key = new EmpData(1, (short) 1, 1, 1);
region1.put(emp_data_key, "value_1");
ObjectMapper mapper = new ObjectMapper();
emp_key = mapper.writeValueAsString(emp_data_key);
}
@AfterClass
public static void tearDown() throws Exception {
cache.close();
cache = null;
}
/*
* This test addresses GEODE-3544
*/
@Test
public void testLocateKeyIsObject() throws Exception {
DataCommandFunction dataCmdFn = new DataCommandFunction();
DataCommandResult result = dataCmdFn.locateEntry(emp_key, EmpData.class.getName(),
String.class.getName(), PARTITIONED_REGION, false, (InternalCache) cache);
assertNotNull(result);
result.aggregate(null);
List<DataCommandResult.KeyInfo> keyInfos = result.getLocateEntryLocations();
assertEquals(1, keyInfos.size());
}
}