/* * JBoss, Home of Professional Open Source. * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. Some portions may be licensed * to Red Hat, Inc. under one or more contributor license agreements. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ package org.teiid.translator.infinispan.hotrod; import java.io.FileReader; import java.util.Properties; import org.junit.Test; import org.mockito.Mockito; import org.teiid.core.util.UnitTestUtil; import org.teiid.infinispan.api.InfinispanConnection; import org.teiid.infinispan.api.ProtobufResource; import org.teiid.metadata.MetadataFactory; import org.teiid.query.metadata.SystemMetadata; import org.teiid.query.parser.QueryParser; import static org.junit.Assert.*; public class TestSchemaToProtobufProcessor { @Test public void testConverstion() throws Exception { SchemaToProtobufProcessor tool = new SchemaToProtobufProcessor(); MetadataFactory mf = TestProtobufMetadataProcessor.protoMatadata("tables.proto"); ProtobufResource resource = tool.process(mf, Mockito.mock(InfinispanConnection.class)); String expected = "package model;\n" + "\n" + "/* @Indexed */\n" + "message G1 {\n" + " /* @Id @IndexedField(index=true, store=false) */\n" + " required int32 e1 = 1;\n" + " /* @IndexedField */\n" + " required string e2 = 2;\n" + " optional float e3 = 3;\n" + " /* @IndexedField(index=true, store=false) */\n" + " repeated string e4 = 4;\n" + " repeated string e5 = 5;\n" + "}\n" + "\n" + "/* @Indexed */\n" + "message G2 {\n" + " /* @Id */\n" + " required int32 e1 = 1;\n" + " required string e2 = 2;\n" + " optional G3 g3 = 5;\n" + " /* @IndexedField(index=false) */\n" + " optional bytes e5 = 7;\n" + " optional fixed64 e6 = 8;\n" + " repeated G4 g4 = 6;\n" + "}\n" + "\n" + "/* @Indexed */\n" + "message G4 {\n" + " required int32 e1 = 1;\n" + " required string e2 = 2;\n" + " optional int32 e1 = 3;\n" + "}\n" + "\n" + "message pm1.G3 {\n" + " required int32 e1 = 1;\n" + " required string e2 = 2;\n" + "}"; assertEquals(expected, resource.getContents()); } @Test public void testSimpleNoMetadataConversion() throws Exception { Properties props = new Properties(); MetadataFactory mf = new MetadataFactory("proto", 1, "model", SystemMetadata.getInstance().getRuntimeTypeMap(), props, null); mf.setParser(new QueryParser()); mf.parse(new FileReader(UnitTestUtil.getTestDataFile("tables_no_metadata.ddl"))); SchemaToProtobufProcessor tool = new SchemaToProtobufProcessor(); tool.setIndexMessages(true); ProtobufResource resource = tool.process(mf, Mockito.mock(InfinispanConnection.class)); String expected = "package model;\n" + "\n" + "/* @Indexed */\n"+ "message G1 {\n" + " /* @Id */\n" + " required int32 e1 = 1;\n" + " required string e2 = 2;\n" + " optional float e3 = 3;\n" + " repeated string e4 = 4;\n" + " repeated string e5 = 5;\n" + "}\n" + "\n" + "/* @Indexed */\n"+ "message G2 {\n" + " /* @Id */\n" + " required int32 e1 = 1;\n" + " optional string e2 = 2;\n" + " optional bytes e5 = 3;\n" + " optional int64 e6 = 4;\n" + " repeated G4 g4 = 5;\n" + "}\n" + "\n" + "/* @Indexed */\n"+ "message G4 {\n" + " required int32 e1 = 1;\n" + " required string e2 = 2;\n" + "}\n\n"; assertEquals(expected, resource.getContents()); } }