blob: 5504ddab49e2d4e3d37751a385c0ca0101c1a0b3 [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 com.datatorrent.lib.appdata.schemas;
import java.util.Collections;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.datatorrent.lib.util.KryoCloneUtils;
public class SchemaRegistryMultipleTest
{
private static final Map<String, String> SCHEMA_ADS_KEYS;
private static final Map<String, String> SCHEMA_SALES_KEYS;
static {
Map<String, String> schemaAdsKeys = Maps.newHashMap();
schemaAdsKeys.put("type", "ads");
Map<String, String> schemaSalesKeys = Maps.newHashMap();
schemaSalesKeys.put("type", "sales");
SCHEMA_ADS_KEYS = Collections.unmodifiableMap(schemaAdsKeys);
SCHEMA_SALES_KEYS = Collections.unmodifiableMap(schemaSalesKeys);
}
@Test
public void serializationTest() throws Exception
{
SchemaRegistryMultiple schemaRegistryMultiple = createSchemaRegistry();
schemaRegistryMultiple = KryoCloneUtils.cloneObject(schemaRegistryMultiple);
Assert.assertEquals(2, schemaRegistryMultiple.size());
}
@Test
public void simpleTest()
{
final String id = "1";
SchemaRegistryMultiple registry = createSchemaRegistry();
//Get schema for ads
Schema tempAdsSchema = registry.getSchema(SCHEMA_ADS_KEYS);
Assert.assertEquals(SCHEMA_ADS_KEYS, tempAdsSchema.getSchemaKeys());
//Get schema for sales
Schema tempSalesSchema = registry.getSchema(SCHEMA_SALES_KEYS);
Assert.assertEquals(SCHEMA_SALES_KEYS, tempSalesSchema.getSchemaKeys());
//Query schema for ads
SchemaQuery schemaQueryAds = new SchemaQuery(id, SCHEMA_ADS_KEYS);
SchemaResult result = registry.getSchemaResult(schemaQueryAds);
Assert.assertEquals(1, result.getGenericSchemas().length);
Assert.assertEquals(SCHEMA_ADS_KEYS, result.getGenericSchemas()[0].getSchemaKeys());
//Query schema for sales
SchemaQuery schemaQuerySales = new SchemaQuery(id, SCHEMA_SALES_KEYS);
result = registry.getSchemaResult(schemaQuerySales);
Assert.assertEquals(1, result.getGenericSchemas().length);
Assert.assertEquals(SCHEMA_SALES_KEYS, result.getGenericSchemas()[0].getSchemaKeys());
}
private SchemaRegistryMultiple createSchemaRegistry()
{
MockSchema schemaAds = new MockSchema();
final Map<String, String> schemaAdsKeys = Maps.newHashMap();
schemaAdsKeys.put("type", "ads");
MockSchema schemaSales = new MockSchema();
final Map<String, String> schemaSalesKeys = Maps.newHashMap();
schemaSalesKeys.put("type", "sales");
SchemaRegistryMultiple registry = new SchemaRegistryMultiple(Lists.newArrayList("type"));
registry.registerSchema(schemaAds, schemaAdsKeys);
registry.registerSchema(schemaSales, schemaSalesKeys);
return registry;
}
public static class MockSchema implements Schema
{
private Map<String, String> schemaKeys;
public MockSchema()
{
}
@Override
public int getSchemaID()
{
return 0;
}
@Override
public String getSchemaType()
{
return "mock";
}
@Override
public String getSchemaVersion()
{
return "0";
}
@Override
public String getSchemaJSON()
{
return "{\"hello\":\"world\"}";
}
@Override
public Map<String, String> getSchemaKeys()
{
return schemaKeys;
}
@Override
public void setSchemaKeys(Map<String, String> schemaKeys)
{
this.schemaKeys = schemaKeys;
}
}
}