blob: 3107ecdefe38c04f48286ea4318395bdbe912992 [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.solr.cloud;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
public class OverseerSolrResponseTest extends SolrTestCaseJ4 {
public void testEmpty() {
assertSerializeDeserialize(new NamedList<Object>());
}
public void testWithSingleObject() {
NamedList<Object> responseNl = new NamedList<>();
responseNl.add("foo", "bar");
assertSerializeDeserialize(responseNl);
}
public void testWithMultipleObject() {
NamedList<Object> responseNl = new NamedList<>();
responseNl.add("foo", "bar");
responseNl.add("foobar", "foo");
assertSerializeDeserialize(responseNl);
}
public void testRepeatedKeys() {
NamedList<Object> responseNl = new NamedList<>();
responseNl.add("foo", "bar");
responseNl.add("foo", "zoo");
assertSerializeDeserialize(responseNl);
}
public void testNested() {
NamedList<Object> responseNl = new NamedList<>();
NamedList<Object> response2 = new NamedList<>();
response2.add("foo", "bar");
responseNl.add("foo", response2);
assertSerializeDeserialize(responseNl);
}
public void testException() {
NamedList<Object> responseNl = new NamedList<>();
SolrException e = new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Foo");
SimpleOrderedMap<Object> exceptionNl = new SimpleOrderedMap<>();
exceptionNl.add("msg", e.getMessage());
exceptionNl.add("rspCode", e.code());
responseNl.add("exception", exceptionNl);
OverseerSolrResponse deserialized = OverseerSolrResponseSerializer.deserialize(OverseerSolrResponseSerializer.serialize(new OverseerSolrResponse(responseNl)));
assertNotNull("Expecting an exception", deserialized.getException());
assertEquals("Unexpected exception type in deserialized response", SolrException.class, deserialized.getException().getClass());
assertEquals("Unexpected exception code in deserialized response", e.code(), ((SolrException)deserialized.getException()).code());
assertEquals("Unexpected exception message in deserialized response", e.getMessage(), deserialized.getException().getMessage());
}
private void assertSerializeDeserialize(NamedList<Object> content) {
OverseerSolrResponse response = new OverseerSolrResponse(content);
byte[] serialized = OverseerSolrResponseSerializer.serialize(response);
OverseerSolrResponse deserialized = OverseerSolrResponseSerializer.deserialize(serialized);
assertEquals("Deserialized response is different than original", response.getResponse(), deserialized.getResponse());
}
}