LENS-1287: Create command in cli to create schema taking parent directory where schema is stored
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/d9884ec6 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/d9884ec6 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/d9884ec6 Branch: refs/heads/master Commit: d9884ec6dcc59825f7f771b4d0c3cf7f187686f8 Parents: 2cfb7b0 Author: Rajat Khandelwal <[email protected]> Authored: Mon Oct 10 15:11:14 2016 +0530 Committer: Rajat Khandelwal <[email protected]> Committed: Mon Oct 10 15:11:14 2016 +0530 ---------------------------------------------------------------------- .../lens/cli/commands/LensDatabaseCommands.java | 3 +- .../commands/LensDimensionTableCommands.java | 3 +- .../lens/cli/commands/LensFactCommands.java | 3 +- .../lens/cli/commands/LensSchemaCommands.java | 162 +++++++++++++ .../java/org/apache/lens/cli/LensCLITest.java | 67 ++++++ .../apache/lens/cli/TestLensCubeCommands.java | 6 +- .../lens/cli/TestLensDatabaseCommands.java | 4 +- .../lens/cli/TestLensDimensionCommands.java | 8 +- .../cli/TestLensDimensionTableCommands.java | 7 +- .../apache/lens/cli/TestLensFactCommands.java | 6 +- .../TestLensFactCommandsWithMissingWeight.java | 4 +- .../apache/lens/cli/TestLensQueryCommands.java | 4 +- .../apache/lens/cli/TestLensSchemaCommands.java | 49 ++++ .../lens/cli/TestLensSegmentationCommands.java | 6 +- .../lens/cli/TestLensStorageCommands.java | 6 +- .../lens/cli/doc/TestGenerateCLIUserDoc.java | 68 ++++-- .../resources/cube_with_no_weight_facts.xml | 41 ---- lens-cli/src/test/resources/dim_table.xml | 48 ---- lens-cli/src/test/resources/dim_table2.xml | 48 ---- lens-cli/src/test/resources/fact1.xml | 51 ----- .../src/test/resources/fact_without_weight.xml | 51 ----- lens-cli/src/test/resources/local-storage.xml | 27 --- lens-cli/src/test/resources/sample-cube.xml | 102 --------- .../cubes/base/cube_with_no_weight_facts.xml | 41 ++++ .../resources/schema/cubes/base/sample-cube.xml | 102 +++++++++ .../resources/schema/dimensions/test-detail.xml | 32 +++ .../schema/dimensions/test-dimension.xml | 61 +++++ .../resources/schema/dimtables/dim_table.xml | 48 ++++ .../resources/schema/dimtables/dim_table2.xml | 48 ++++ .../src/test/resources/schema/facts/fact1.xml | 51 +++++ .../schema/facts/fact_without_weight.xml | 51 +++++ .../resources/schema/segmentations/seg1.xml | 45 ++++ .../resources/schema/storages/local-storage.xml | 26 +++ lens-cli/src/test/resources/seg1.xml | 45 ---- lens-cli/src/test/resources/test-detail.xml | 32 --- lens-cli/src/test/resources/test-dimension.xml | 61 ----- src/site/apt/user/cli.apt | 228 ++++++++++++------- 37 files changed, 1010 insertions(+), 635 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java index 05108f0..c6ae02b 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDatabaseCommands.java @@ -87,7 +87,8 @@ public class LensDatabaseCommands extends LensCRUDCommand { * @return the string */ @CliCommand(value = "drop database", help = "drop a database with specified name") - public String dropDatabase(@CliOption(key = {"", "db"}, mandatory = true, help = "<database-name>") String database, + public String dropDatabase( + @CliOption(key = {"", "db", "database"}, mandatory = true, help = "<database-name>") String database, @CliOption(key = "cascade", specifiedDefaultValue = "true", unspecifiedDefaultValue = "false") boolean cascade) { return drop(database, cascade); } http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDimensionTableCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDimensionTableCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDimensionTableCommands.java index 7df5c7c..26650c1 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDimensionTableCommands.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensDimensionTableCommands.java @@ -110,7 +110,8 @@ public class LensDimensionTableCommands extends LogicalTableCrudCommand<XDimensi + " By default <cascade> is false") public String dropDimensionTable( @CliOption(key = {"", "dimtable_name"}, mandatory = true, help = "<dimtable_name>") String name, - @CliOption(key = {"cascade"}, mandatory = false, unspecifiedDefaultValue = "false", help = "<cascade>") + @CliOption(key = {"cascade"}, mandatory = false, specifiedDefaultValue = "true", unspecifiedDefaultValue = "false", + help = "<cascade>") boolean cascade) { return drop(name, cascade); } http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java index 6457bce..9ea887a 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensFactCommands.java @@ -105,7 +105,8 @@ public class LensFactCommands extends LogicalTableCrudCommand<XFactTable> { + " By default <cascade> is false") public String dropFact( @CliOption(key = {"", "fact_name"}, mandatory = true, help = "<fact_name>") String fact, - @CliOption(key = {"cascade"}, mandatory = false, unspecifiedDefaultValue = "false", help = "<cascade>") + @CliOption(key = {"cascade"}, mandatory = false, specifiedDefaultValue = "true", unspecifiedDefaultValue = "false", + help = "<cascade>") boolean cascade) { return drop(fact, cascade); } http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java new file mode 100644 index 0000000..feabf9c --- /dev/null +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensSchemaCommands.java @@ -0,0 +1,162 @@ +/** + * 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.lens.cli.commands; + +import java.io.*; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.apache.lens.cli.commands.annotations.UserDocumentation; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.shell.core.CommandMarker; +import org.springframework.shell.core.JLineShellComponent; +import org.springframework.shell.core.annotation.CliCommand; +import org.springframework.shell.core.annotation.CliOption; +import org.springframework.shell.support.logging.HandlerUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +import com.google.common.collect.Lists; + +@Component +@UserDocumentation(title = "Creating schema with one command", + description = "") +public class LensSchemaCommands implements CommandMarker { + public static final String STRUCTURE = "\n" + + ".\n" + + "|-- storages\n" + + "| |-- storage1.xml\n" + + "| |-- storage2.xml\n" + + "|\n" + + "|-- dimensions\n" + + "| |-- dim1.xml\n" + + "| |-- dim2.xml\n" + + "|\n" + + "|-- cubes\n" + + "| |-- base\n" + + "| | |-- base_cube1.xml\n" + + "| | |-- base_cube2.xml\n" + + "| |\n" + + "| |-- derived\n" + + "| | |-- derived_cube1.xml\n" + + "| | |-- derived_cube2.xml\n" + + "| |\n" + + "| |-- independent_cube1.xml\n" + + "| |-- independent_cube2.xml\n" + + "|\n" + + "|-- dimensiontables\n" + + "| |-- dimtable1.xml\n" + + "| |-- dimtable2.xml\n" + + "|\n" + + "|-- dimtables\n" + + "| |-- dimtable3.xml\n" + + "| |-- dimtable4.xml\n" + + "|\n" + + "|-- facts\n" + + " |-- fact1.xml\n" + + " |-- fact2.xml\n\n\n" + + "If your cubes are divided between base and derived cubes,\nit makes sense to seperate into two directories, " + + "since derived cubes can't be created unless base cube exists.\nIn the other case you can keep them in the cubes " + + "directory itself.\nFor dimtables, you can keep your schema files in a directory named either dimtables or " + + "dimensiontables.\nEach of these directories is optional and the order of processing is top to bottom.\nCLI will " + + "let you know in case of any errors and proceed further without failing in between."; + protected final Logger logger = HandlerUtils.getLogger(getClass()); + + { + logger.setLevel(Level.FINE); + } + + private static final FilenameFilter XML_FILTER = new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.endsWith(".xml"); + } + }; + @Autowired + private JLineShellComponent shell; + + @CliCommand(value = {"schema", "create schema"}, + help = "Parses the specified resource file and executes commands for " + + "creation/updation of schema\nExpected structure is " + STRUCTURE) + public void script( + @CliOption(key = {"", "db"}, + help = "<database-to-create-schema-in>", mandatory = true) final String database, + @CliOption(key = {"", "file", "path"}, + help = "<schema-directory>", mandatory = true) final File schemaDirectory) { + if (!schemaDirectory.isDirectory()) { + throw new IllegalStateException("Schema directory should be a directory"); + } + + // ignore result. it can fail if database already exists + shell.executeCommand("create database " + database); + if (shell.executeScriptLine("use " + database)) { + createOrUpdate(new File(schemaDirectory, "storages"), "storage", + "create storage --path %s", "update storage --name %s --path %s"); + createOrUpdate(new File(schemaDirectory, "dimensions"), "dimension", + "create dimension --path %s", "update dimension --name %s --path %s"); + createOrUpdate(new File(new File(schemaDirectory, "cubes"), "base"), "base cube", + "create cube --path %s", "update cube --name %s --path %s"); + createOrUpdate(new File(new File(schemaDirectory, "cubes"), "derived"), "derived cube", + "create cube --path %s", "update cube --name %s --path %s"); + createOrUpdate(new File(schemaDirectory, "dimensiontables"), "dimension table", + "create dimtable --path %s", "update dimtable --dimtable_name %s --path %s"); + createOrUpdate(new File(schemaDirectory, "dimtables"), "dimension table", + "create dimtable --path %s", "update dimtable --dimtable_name %s --path %s"); + createOrUpdate(new File(schemaDirectory, "facts"), "fact", + "create fact --path %s", "update fact --fact_name %s --path %s"); + createOrUpdate(new File(schemaDirectory, "segmentations"), "fact", + "create segmentation --path %s", "update segmentation --name %s --path %s"); + } else { + throw new IllegalStateException("Switching to database " + database + " failed"); + } + } + + public List<File> createOrUpdate(File parent, String entityType, String createSyntax, String updateSyntax) { + List<File> failedFiles = Lists.newArrayList(); + // Create/update entities + if (parent.exists()) { + Assert.isTrue(parent.isDirectory(), parent.toString() + " must be a directory"); + for (File entityFile : parent.listFiles(XML_FILTER)) { + String entityName = entityFile.getName().substring(0, entityFile.getName().length() - 4); + String entityPath = entityFile.getAbsolutePath(); + String createCommand = String.format(createSyntax, entityPath); + logger.fine(createCommand); + if (shell.executeScriptLine(createCommand)) { + logger.info("Created " + entityType + " " + entityName); + } else { + logger.warning("Create failed, trying update"); + String updateCommand = String.format(updateSyntax, entityName, entityPath); + logger.fine(updateCommand); + if (shell.executeScriptLine(updateCommand)) { + logger.info("Updated " + entityType + " " + entityName); + } else { + logger.severe("Couldn't create or update " + entityType + " " + entityName); + failedFiles.add(entityFile); + } + } + } + } + if (!failedFiles.isEmpty()) { + logger.severe("Failed for " + entityType + ": " + failedFiles); + } + return failedFiles; + } +} http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/LensCLITest.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/LensCLITest.java b/lens-cli/src/test/java/org/apache/lens/cli/LensCLITest.java new file mode 100644 index 0000000..8d80c7b --- /dev/null +++ b/lens-cli/src/test/java/org/apache/lens/cli/LensCLITest.java @@ -0,0 +1,67 @@ +/** + * 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.lens.cli; + +import org.springframework.shell.Bootstrap; +import org.springframework.shell.core.CommandResult; +import org.springframework.shell.core.JLineShellComponent; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; + +/** + * The Class TestLensStorageCommands. + */ +public class LensCLITest extends LensCliApplicationTest { + + protected static JLineShellComponent shell; + + @BeforeClass + public static void startUp() throws InterruptedException { + Bootstrap bootstrap = new Bootstrap(); + shell = bootstrap.getJLineShellComponent(); + } + + + public <T> T execute(String command) throws Throwable { + CommandResult commandResult = shell.executeCommand(command); + if (commandResult.isSuccess()) { + return (T) commandResult.getResult(); + } + if (commandResult.getException() != null) { + throw commandResult.getException(); + } + throw new AssertionError("Result is not success and exception is null"); + } + + public <T> void execute(String command, T result) throws Throwable { + Assert.assertEquals(execute(command), result); + } + + public <T> void execute(String command, T result, Throwable throwable) throws Throwable { + CommandResult commandResult = shell.executeCommand(command); + if (commandResult.isSuccess()) { + Assert.assertNull(throwable); + Assert.assertEquals(commandResult.getResult(), result); + } else { + Assert.assertNull(result); + Assert.assertEquals(commandResult.getException().getClass(), throwable.getClass()); + Assert.assertEquals(commandResult.getException().getMessage(), throwable.getMessage()); + } + } +} http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensCubeCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensCubeCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensCubeCommands.java index c20766c..ae12deb 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensCubeCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensCubeCommands.java @@ -55,13 +55,13 @@ public class TestLensCubeCommands extends LensCliApplicationTest { LensDimensionCommands dimensionCommand = new LensDimensionCommands(); dimensionCommand.setClient(client); dimensionCommand.createDimension(new File( - TestLensCubeCommands.class.getClassLoader().getResource("test-detail.xml").toURI())); + TestLensCubeCommands.class.getClassLoader().getResource("schema/dimensions/test-detail.xml").toURI())); dimensionCommand.createDimension(new File( - TestLensCubeCommands.class.getClassLoader().getResource("test-dimension.xml").toURI())); + TestLensCubeCommands.class.getClassLoader().getResource("schema/dimensions/test-dimension.xml").toURI())); LensCubeCommands command = new LensCubeCommands(); command.setClient(client); LOG.debug("Starting to test cube commands"); - URL cubeSpec = TestLensCubeCommands.class.getClassLoader().getResource("sample-cube.xml"); + URL cubeSpec = TestLensCubeCommands.class.getClassLoader().getResource("schema/cubes/base/sample-cube.xml"); String cubeList = command.showCubes(); assertFalse(cubeList.contains("sample_cube")); command.createCube(new File(cubeSpec.toURI())); http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java index 9687c60..7fc8438 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java @@ -68,8 +68,8 @@ public class TestLensDatabaseCommands extends LensCliApplicationTest { result = command.switchDatabase(myDatabase); assertEquals(result, "Successfully switched to my_db"); if (cascade) { - String createOutput = cubeCommand.createCube( - new File(TestLensDatabaseCommands.class.getClassLoader().getResource("sample-cube.xml").toURI())); + String createOutput = cubeCommand.createCube(new File(TestLensDatabaseCommands.class.getClassLoader() + .getResource("schema/cubes/base/sample-cube.xml").toURI())); assertEquals(createOutput, "succeeded"); assertTrue(cubeCommand.showCubes().contains("sample_cube")); } http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionCommands.java index a3f01c3..c29e842 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionCommands.java @@ -71,8 +71,9 @@ public class TestLensDimensionCommands extends LensCliApplicationTest { */ public static void createDimension() throws URISyntaxException { getCommand().createDimension(new File( - TestLensCubeCommands.class.getClassLoader().getResource("test-detail.xml").toURI())); - URL dimensionSpec = TestLensDimensionCommands.class.getClassLoader().getResource("test-dimension.xml"); + TestLensCubeCommands.class.getClassLoader().getResource("schema/dimensions/test-detail.xml").toURI())); + URL dimensionSpec = TestLensDimensionCommands.class.getClassLoader() + .getResource("schema/dimensions/test-dimension.xml"); getCommand().createDimension(new File(dimensionSpec.toURI())); } @@ -85,7 +86,8 @@ public class TestLensDimensionCommands extends LensCliApplicationTest { @Test public void testDimensionCommands() throws Exception { log.debug("Starting to test dimension commands"); - URL dimensionSpec = TestLensDimensionCommands.class.getClassLoader().getResource("test-dimension.xml"); + URL dimensionSpec = TestLensDimensionCommands.class.getClassLoader() + .getResource("schema/dimensions/test-dimension.xml"); String dimensionList = getCommand().showDimensions(); Assert.assertFalse(dimensionList.contains("test_dim")); createDimension(); http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionTableCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionTableCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionTableCommands.java index 5d6d768..20289cd 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionTableCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDimensionTableCommands.java @@ -85,7 +85,7 @@ public class TestLensDimensionTableCommands extends LensCliApplicationTest { @Test public void testDimTableCommands() throws IOException, URISyntaxException { createDimension(); - addDim1Table("dim_table2", "dim_table2.xml", DIM_LOCAL); + addDim1Table("dim_table2", "schema/dimtables/dim_table2.xml", DIM_LOCAL); updateDim1Table(); testDimStorageActions(); testDimPartitionActions(); @@ -98,7 +98,8 @@ public class TestLensDimensionTableCommands extends LensCliApplicationTest { } private void createDimension() throws URISyntaxException { - URL dimensionSpec = TestLensDimensionTableCommands.class.getClassLoader().getResource("test-dimension.xml"); + URL dimensionSpec = TestLensDimensionTableCommands.class.getClassLoader() + .getResource("schema/dimensions/test-dimension.xml"); getDimensionCommand().createDimension(new File(dimensionSpec.toURI())); } @@ -153,7 +154,7 @@ public class TestLensDimensionTableCommands extends LensCliApplicationTest { */ private static void updateDim1Table() throws IOException { LensDimensionTableCommands command = getCommand(); - URL dimSpec = TestLensFactCommands.class.getClassLoader().getResource("dim_table2.xml"); + URL dimSpec = TestLensFactCommands.class.getClassLoader().getResource("schema/dimtables/dim_table2.xml"); StringBuilder sb = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new FileReader(dimSpec.getFile())); String s; http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java index b4cbf34..f176078 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommands.java @@ -66,7 +66,7 @@ public class TestLensFactCommands extends LensCliApplicationTest { } private void createSampleCube() throws URISyntaxException { - URL cubeSpec = TestLensCubeCommands.class.getClassLoader().getResource("sample-cube.xml"); + URL cubeSpec = TestLensCubeCommands.class.getClassLoader().getResource("schema/cubes/base/sample-cube.xml"); String cubeList = getCubeCommand().showCubes(); assertFalse(cubeList.contains("sample_cube"), cubeList); getCubeCommand().createCube(new File(cubeSpec.toURI())); @@ -118,7 +118,7 @@ public class TestLensFactCommands extends LensCliApplicationTest { assertEquals(factList, "No fact found", "Fact tables should not be found"); // add local storage before adding fact table TestLensStorageCommands.addLocalStorage(FACT_LOCAL); - URL factSpec = TestLensFactCommands.class.getClassLoader().getResource("fact1.xml"); + URL factSpec = TestLensFactCommands.class.getClassLoader().getResource("schema/facts/fact1.xml"); try { command.createFact(new File(factSpec.toURI())); } catch (Exception e) { @@ -147,7 +147,7 @@ public class TestLensFactCommands extends LensCliApplicationTest { public static void updateFact1Table() { try { LensFactCommands command = getCommand(); - URL factSpec = TestLensFactCommands.class.getClassLoader().getResource("fact1.xml"); + URL factSpec = TestLensFactCommands.class.getClassLoader().getResource("schema/facts/fact1.xml"); StringBuilder sb = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new FileReader(factSpec.getFile())); String s; http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommandsWithMissingWeight.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommandsWithMissingWeight.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommandsWithMissingWeight.java index 24f9279..dcbb355 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommandsWithMissingWeight.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensFactCommandsWithMissingWeight.java @@ -53,10 +53,10 @@ public class TestLensFactCommandsWithMissingWeight extends LensCliApplicationTes public static final String FACT_NAME = "fact_without_wt"; /* The File name with cube details */ - public static final String CUBE_XML_FILE = "cube_with_no_weight_facts.xml"; + public static final String CUBE_XML_FILE = "schema/cubes/base/cube_with_no_weight_facts.xml"; /* The File name with fact details */ - public static final String FACT_XML_FILE = "fact_without_weight.xml"; + public static final String FACT_XML_FILE = "schema/facts/fact_without_weight.xml"; /** The command. */ private static LensFactCommands command = null; http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java index e75fc0e..e1eaae5 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java @@ -416,10 +416,10 @@ public class TestLensQueryCommands extends LensCliApplicationTest { command.setClient(client); log.debug("Starting to test cube commands"); - URL cubeSpec = TestLensQueryCommands.class.getClassLoader().getResource("sample-cube.xml"); + URL cubeSpec = TestLensQueryCommands.class.getClassLoader().getResource("schema/cubes/base/sample-cube.xml"); command.createCube(new File(cubeSpec.toURI())); TestLensDimensionCommands.createDimension(); - TestLensDimensionTableCommands.addDim1Table("dim_table", "dim_table.xml", "local"); + TestLensDimensionTableCommands.addDim1Table("dim_table", "schema/dimtables/dim_table.xml", "local"); // Add partition URL dataDir = TestLensQueryCommands.class.getClassLoader().getResource("dim2-part"); http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensSchemaCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensSchemaCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensSchemaCommands.java new file mode 100644 index 0000000..ca6db2c --- /dev/null +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensSchemaCommands.java @@ -0,0 +1,49 @@ +/** + * 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.lens.cli; + +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + +import org.testng.annotations.Test; + +/** + * The Class TestLensStorageCommands. + */ +public class TestLensSchemaCommands extends LensCLITest { + + @Test + public void testCreateSchema() throws Throwable { + String schemaDirectory = TestLensSchemaCommands.class.getClassLoader().getResource("schema").getFile(); + String dbName = "schema_command_db"; + try { + execute("schema --db " + dbName + " --path " + schemaDirectory, null); + assertTrue(((String) execute("show databases")).contains(dbName)); + execute("show storages", "local"); + execute("show dimensions", "test_detail\ntest_dim"); + execute("show cubes", "sample_cube\ncube_with_no_weight_facts"); + assertTrue(((String) execute("show dimtables")).contains("dim_table")); + assertTrue(((String) execute("show facts")).contains("fact1")); + execute("show segmentations", "seg1"); + } finally { + execute("drop database --db " + dbName + " --cascade", "succeeded"); + assertFalse(((String) execute("show databases")).contains(dbName)); + } + } +} http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensSegmentationCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensSegmentationCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensSegmentationCommands.java index e6d4bc5..beafd43 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensSegmentationCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensSegmentationCommands.java @@ -41,7 +41,7 @@ public class TestLensSegmentationCommands extends LensCliApplicationTest { private static LensCubeCommands cubeCommands = null; private void createSampleCube() throws URISyntaxException { - URL cubeSpec = TestLensCubeCommands.class.getClassLoader().getResource("sample-cube.xml"); + URL cubeSpec = TestLensCubeCommands.class.getClassLoader().getResource("schema/cubes/base/sample-cube.xml"); String cubeList = getCubeCommand().showCubes(); assertFalse(cubeList.contains("sample_cube"), cubeList); getCubeCommand().createCube(new File(cubeSpec.toURI())); @@ -72,7 +72,7 @@ public class TestLensSegmentationCommands extends LensCliApplicationTest { String segList = command.showSegmentations(null); assertEquals(command.showSegmentations("sample_cube"), "No segmentation found for sample_cube"); assertEquals(segList, "No segmentation found"); - URL segSpec = TestLensSegmentationCommands.class.getClassLoader().getResource("seg1.xml"); + URL segSpec = TestLensSegmentationCommands.class.getClassLoader().getResource("schema/segmentations/seg1.xml"); try { command.createSegmentation(new File(segSpec.toURI())); } catch (Exception e) { @@ -91,7 +91,7 @@ public class TestLensSegmentationCommands extends LensCliApplicationTest { public static void testUpdateSegmentation() { try { LensSegmentationCommands command = getCommand(); - URL segSpec = TestLensSegmentationCommands.class.getClassLoader().getResource("seg1.xml"); + URL segSpec = TestLensSegmentationCommands.class.getClassLoader().getResource("schema/segmentations/seg1.xml"); StringBuilder sb = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new FileReader(segSpec.getFile())); String s; http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/TestLensStorageCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensStorageCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensStorageCommands.java index c4ab614..d320d79 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensStorageCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensStorageCommands.java @@ -92,8 +92,8 @@ public class TestLensStorageCommands extends LensCliApplicationTest { */ public static synchronized void addLocalStorage(String storageName) throws IOException { LensStorageCommands command = getCommand(); - URL storageSpec = TestLensStorageCommands.class.getClassLoader().getResource("local-storage.xml"); - File newFile = new File("target/local-" + storageName + ".xml"); + URL storageSpec = TestLensStorageCommands.class.getClassLoader().getResource("schema/storages/local-storage.xml"); + File newFile = new File(storageSpec.getFile().replace("local-storage", "local-"+storageName)); try { StringBuilder sb = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new FileReader(storageSpec.getFile())); @@ -131,7 +131,7 @@ public class TestLensStorageCommands extends LensCliApplicationTest { private void testUpdateStorage(String storageName) throws IOException { LensStorageCommands command = getCommand(); - URL storageSpec = TestLensStorageCommands.class.getClassLoader().getResource("local-storage.xml"); + URL storageSpec = TestLensStorageCommands.class.getClassLoader().getResource("schema/storages/local-storage.xml"); StringBuilder sb = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new FileReader(storageSpec.getFile())); String s; http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/java/org/apache/lens/cli/doc/TestGenerateCLIUserDoc.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/doc/TestGenerateCLIUserDoc.java b/lens-cli/src/test/java/org/apache/lens/cli/doc/TestGenerateCLIUserDoc.java index 95e6b4e..34bb5ce 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/doc/TestGenerateCLIUserDoc.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/doc/TestGenerateCLIUserDoc.java @@ -28,24 +28,53 @@ import org.apache.lens.cli.commands.annotations.UserDocumentation; import org.apache.commons.lang.StringUtils; +import org.springframework.shell.core.CommandMarker; import org.springframework.shell.core.annotation.CliCommand; import org.springframework.shell.core.annotation.CliOption; import org.testng.annotations.Test; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import lombok.Data; import lombok.extern.slf4j.Slf4j; @Slf4j public class TestGenerateCLIUserDoc { public static final String APT_FILE = "../src/site/apt/user/cli.apt"; - + @Data + static class DocEntry { + private String command; + private String[] help; + private int maxLength = 0; + public DocEntry(String command, String help) { + this.command = command; + this.help = help.split("\r|\n"); + for (int i = 0; i < this.help.length; i++) { + this.help[i] = this.help[i].replaceAll("\\|", "\\\\|"); + if (i > 0) { + this.help[i] = this.help[i].replaceAll("\\ ", "\\\\ "); + } + } + for (String line: this.help) { + if (line.length() > maxLength) { + maxLength = line.length(); + } + } + for (int i = 0; i < this.help.length; i++) { + StringBuilder sb = new StringBuilder(this.help[i]); + while (sb.length() < maxLength) { + sb.append(" "); + } + this.help[i] = sb.append("\\ ").toString(); + } + } + } @Test public void generateDoc() throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter(new File(APT_FILE))); StringBuilder sb = new StringBuilder(); sb.append(getCLIIntroduction()).append("\n\n\n"); - List<Class<? extends BaseLensCommand>> classes = Lists.newArrayList( + List<Class<? extends CommandMarker>> classes = Lists.newArrayList( LensConnectionCommands.class, LensDatabaseCommands.class, LensStorageCommands.class, @@ -55,8 +84,10 @@ public class TestGenerateCLIUserDoc { LensDimensionTableCommands.class, LensNativeTableCommands.class, LensQueryCommands.class, - LensLogResourceCommands.class + LensLogResourceCommands.class, + LensSchemaCommands.class ); + for (Class claz : classes) { UserDocumentation doc = (UserDocumentation) claz.getAnnotation(UserDocumentation.class); if (doc != null && StringUtils.isNotBlank(doc.title())) { @@ -79,13 +110,13 @@ public class TestGenerateCLIUserDoc { log.info("Not adding " + method.getDeclaringClass().getSimpleName() + "#" + method.getName()); } } - + List<DocEntry> docEntries = Lists.newArrayList(); for (Method method : methods) { CliCommand annot = method.getAnnotation(CliCommand.class); - sb.append("|"); + StringBuilder commandBuilder = new StringBuilder(); String sep = ""; for (String value : annot.value()) { - sb.append(sep).append(value); + commandBuilder.append(sep).append(value); sep = "/"; } for (Annotation[] annotations : method.getParameterAnnotations()) { @@ -99,32 +130,39 @@ public class TestGenerateCLIUserDoc { keys.remove(""); } if (!keys.isEmpty()) { - sb.append(" "); + commandBuilder.append(" "); if (!cliOption.mandatory()) { - sb.append("["); + commandBuilder.append("["); } if (optional) { - sb.append("["); + commandBuilder.append("["); } sep = ""; for (String key : keys) { - sb.append(sep).append("--").append(key); + commandBuilder.append(sep).append("--").append(key); sep = "/"; } if (optional) { - sb.append("]"); + commandBuilder.append("]"); } sep = ""; } - sb.append(" ").append(cliOption.help().replaceAll("<", "\\\\<").replaceAll(">", "\\\\>")); + commandBuilder.append(" ").append(cliOption.help().replaceAll("<", "\\\\<").replaceAll(">", "\\\\>")); if (!cliOption.mandatory()) { - sb.append("]"); + commandBuilder.append("]"); } } } } - sb.append("|").append(annot.help().replaceAll("<", "<<<").replaceAll(">", ">>>")).append("|").append("\n") - .append("*--+--+\n"); + docEntries.add(new DocEntry(commandBuilder.toString(), + annot.help().replaceAll("<", "<<<").replaceAll(">", ">>>"))); + } + for (DocEntry entry: docEntries) { + for (int i = 0; i < entry.getHelp().length; i++) { + sb.append("|").append(i == 0 ? entry.getCommand() : entry.getCommand().replaceAll(".", " ")) + .append("|").append(entry.getHelp()[i]).append("|").append("\n"); + } + sb.append("*--+--+\n"); } sb.append(" <<").append(getReadableName(claz.getSimpleName())).append(">>\n\n===\n\n"); } http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/cube_with_no_weight_facts.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/cube_with_no_weight_facts.xml b/lens-cli/src/test/resources/cube_with_no_weight_facts.xml deleted file mode 100644 index 4673ca4..0000000 --- a/lens-cli/src/test/resources/cube_with_no_weight_facts.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_base_cube name="cube_with_no_weight_facts" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <measures> - <measure name="measure1" _type="BIGINT" /> - <measure name="measure2" _type="INT" default_aggr="SUM" /> - <measure name="measure3" _type="FLOAT" default_aggr="MAX" start_time='2013-12-12T00:00:00' /> - <measure name="measure4" _type="DOUBLE" default_aggr="MIN" /> - </measures> - <dim_attributes> - <dim_attribute name="dim1" _type="INT" /> - <dim_attribute name="dim2" _type="INT" start_time='2013-12-01T00:00:00' /> - <dim_attribute name="dim3" _type="INT"/> - </dim_attributes> - <expressions> - <expression name="expr_msr5" _type="DOUBLE"> - <expr_spec expr = "measure3 + measure4" end_time='2013-12-12T00:00:00'/> - <expr_spec expr = "measure3 + measure4 + 0.01" start_time='2013-12-12T00:00:00'/> - </expression> - </expressions> -</x_base_cube> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/dim_table.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/dim_table.xml b/lens-cli/src/test/resources/dim_table.xml deleted file mode 100644 index eb4ddfc..0000000 --- a/lens-cli/src/test/resources/dim_table.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_dimension_table dimension_name="test_dim" table_name="dim_table" weight="100.0" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <columns> - <column comment="ID" name="id" _type="INT"/> - <column comment="name" name="name" _type="STRING"/> - <column comment="more details" name="detail" _type="STRING"/> - <column comment="d2 ID" name="d2id" _type="INT"/> - </columns> - <properties> - <property name="dim1.prop" value="d1"/> - </properties> - <storage_tables> - <storage_table> - <update_periods> - <update_period>HOURLY</update_period> - </update_periods> - <storage_name>local</storage_name> - <table_desc external="true" field_delimiter="," - table_location="${project.build.directory}/metastore/examples/local"> - <part_cols> - <column comment="Time column" name="dt" _type="STRING"/> - </part_cols> - <time_part_cols>dt</time_part_cols> - </table_desc> - </storage_table> - </storage_tables> -</x_dimension_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/dim_table2.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/dim_table2.xml b/lens-cli/src/test/resources/dim_table2.xml deleted file mode 100644 index 8440e28..0000000 --- a/lens-cli/src/test/resources/dim_table2.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_dimension_table dimension_name="test_dim" table_name="dim_table2" weight="100.0" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <columns> - <column comment="ID" name="id" _type="INT"/> - <column comment="name" name="name" _type="STRING"/> - <column comment="more details for dim2" name="detail2" _type="STRING"/> - </columns> - - <properties> - <property name="dim2.prop" value="d2"/> - </properties> - <storage_tables> - <storage_table> - <update_periods> - <update_period>HOURLY</update_period> - </update_periods> - <storage_name>dim_local</storage_name> - <table_desc external="true" field_delimiter="," - table_location="${project.build.directory}/metastore/examples/dim1"> - <part_cols> - <column comment="Time column" name="dt" _type="STRING"/> - </part_cols> - <time_part_cols>dt</time_part_cols> - </table_desc> - </storage_table> - </storage_tables> -</x_dimension_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/fact1.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/fact1.xml b/lens-cli/src/test/resources/fact1.xml deleted file mode 100644 index b18a393..0000000 --- a/lens-cli/src/test/resources/fact1.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_fact_table cube_name="sample_cube" name="fact1" weight="100.0" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <columns> - <column comment="" name="dim1" _type="INT"/> - <column comment="" name="measure1" _type="BIGINT"/> - <column comment="" name="measure2" _type="INT"/> - <column comment="" name="measure3" _type="FLOAT"/> - </columns> - <properties> - <property name="fact1.prop" value="f1"/> - <property name="cube.fact.is.aggregated" value="true"/> - </properties> - <storage_tables> - <storage_table> - <update_periods> - <update_period>HOURLY</update_period> - <update_period>DAILY</update_period> - <update_period>MONTHLY</update_period> - </update_periods> - <storage_name>fact_local</storage_name> - <table_desc external="true" field_delimiter="," - table_location="${project.build.directory}/metastore/examples/fact1_local"> - <part_cols> - <column comment="Time column" name="dt" _type="STRING"/> - </part_cols> - <time_part_cols>dt</time_part_cols> - </table_desc> - </storage_table> - </storage_tables> -</x_fact_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/fact_without_weight.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/fact_without_weight.xml b/lens-cli/src/test/resources/fact_without_weight.xml deleted file mode 100644 index 0c124b2..0000000 --- a/lens-cli/src/test/resources/fact_without_weight.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_fact_table cube_name="cube_with_no_weight_facts" name="fact_without_wt" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <columns> - <column comment="" name="dim1" _type="INT"/> - <column comment="" name="measure1" _type="BIGINT"/> - <column comment="" name="measure2" _type="INT"/> - <column comment="" name="measure3" _type="FLOAT"/> - </columns> - <properties> - <property name="fact_without_wt.prop" value="f1"/> - <property name="cube.fact.is.aggregated" value="true"/> - </properties> - <storage_tables> - <storage_table> - <update_periods> - <update_period>HOURLY</update_period> - <update_period>DAILY</update_period> - <update_period>MONTHLY</update_period> - </update_periods> - <storage_name>fact_local_without_wt</storage_name> - <table_desc external="true" field_delimiter="," - table_location="${project.build.directory}/metastore/examples/fact_local_without_wt"> - <part_cols> - <column comment="Time column" name="dt" _type="STRING"/> - </part_cols> - <time_part_cols>dt</time_part_cols> - </table_desc> - </storage_table> - </storage_tables> -</x_fact_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/local-storage.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/local-storage.xml b/lens-cli/src/test/resources/local-storage.xml deleted file mode 100644 index 6551375..0000000 --- a/lens-cli/src/test/resources/local-storage.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_storage classname="org.apache.lens.cube.metadata.HDFSStorage" name="local" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <properties> - <property name="storage.url" value="file:///" /> - </properties> -</x_storage> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/sample-cube.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/sample-cube.xml b/lens-cli/src/test/resources/sample-cube.xml deleted file mode 100644 index 2d6bc34..0000000 --- a/lens-cli/src/test/resources/sample-cube.xml +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_base_cube name="sample_cube" xmlns="uri:lens:cube:0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <properties> - <property name="sample_cube.prop" value="sample" /> - <property name="cube.sample_cube.timed.dimensions.list" value="dt" /> - </properties> - <measures> - <measure name="measure1" _type="BIGINT" /> - <measure name="measure2" _type="INT" default_aggr="SUM" /> - <measure name="measure3" _type="FLOAT" default_aggr="MAX" start_time='2013-12-12T00:00:00' /> - <measure name="measure4" _type="DOUBLE" default_aggr="MIN" /> - <measure name="measure5" _type="BIGINT"> - <tags> - <property name="category" value="primary"/> - <property name="is_ui_visible" value="true"/> - </tags> - </measure> - <measure name="measure6" _type="BIGINT"> - <tags> - <property name="category" value="secondary"/> - <property name="is_ui_visible" value="false"/> - </tags> - </measure> - </measures> - <dim_attributes> - <dim_attribute name="dim1" _type="INT" /> - <dim_attribute name="dim2" _type="INT" start_time='2013-12-01T00:00:00' /> - <dim_attribute name="dim3" _type="INT"/> - <dim_attribute name="dimDetail" _type="string" description="City name to which the customer belongs" - display_string="Customer City"> - <chain_ref_column chain_name="testdimchain" ref_col="detail" /> - <chain_ref_column chain_name="testdetailchain" ref_col="name" /> - </dim_attribute> - <dim_attribute name="dim4" _type="BIGINT"> - <tags> - <property name="category" value="primary"/> - <property name="is_ui_visible" value="true"/> - </tags> - </dim_attribute> - </dim_attributes> - <expressions> - <expression name="expr_msr5" _type="DOUBLE"> - <expr_spec expr = "measure3 + measure4" end_time='2013-12-12T00:00:00'/> - <expr_spec expr = "measure3 + measure4 + 0.01" start_time='2013-12-12T00:00:00'/> - </expression> - <expression name="expr_msr6" _type="DOUBLE"> - <tags> - <property name="category" value="primary"/> - <property name="is_ui_visible" value="true"/> - </tags> - <expr_spec expr = "measure3 + measure4" start_time='2013-12-12T00:00:00' /> - <expr_spec expr = "measure3 + measure4 + 0.01" end_time='2013-12-12T00:00:00'/> - </expression> - </expressions> - <join_chains> - <join_chain name="testdimchain"> - <paths> - <path> - <edges> - <edge> - <from table="sample_cube" column="dim1" /> - <to table="test_dim" column="id" /> - </edge> - </edges> - </path> - </paths> - </join_chain> - <join_chain name="testdetailchain"> - <paths> - <path> - <edges> - <edge> - <from table="sample_cube" column="dim2" /> - <to table="test_detail" column="id" /> - </edge> - </edges> - </path> - </paths> - </join_chain> - </join_chains> -</x_base_cube> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/cubes/base/cube_with_no_weight_facts.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/cubes/base/cube_with_no_weight_facts.xml b/lens-cli/src/test/resources/schema/cubes/base/cube_with_no_weight_facts.xml new file mode 100644 index 0000000..4673ca4 --- /dev/null +++ b/lens-cli/src/test/resources/schema/cubes/base/cube_with_no_weight_facts.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_base_cube name="cube_with_no_weight_facts" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <measures> + <measure name="measure1" _type="BIGINT" /> + <measure name="measure2" _type="INT" default_aggr="SUM" /> + <measure name="measure3" _type="FLOAT" default_aggr="MAX" start_time='2013-12-12T00:00:00' /> + <measure name="measure4" _type="DOUBLE" default_aggr="MIN" /> + </measures> + <dim_attributes> + <dim_attribute name="dim1" _type="INT" /> + <dim_attribute name="dim2" _type="INT" start_time='2013-12-01T00:00:00' /> + <dim_attribute name="dim3" _type="INT"/> + </dim_attributes> + <expressions> + <expression name="expr_msr5" _type="DOUBLE"> + <expr_spec expr = "measure3 + measure4" end_time='2013-12-12T00:00:00'/> + <expr_spec expr = "measure3 + measure4 + 0.01" start_time='2013-12-12T00:00:00'/> + </expression> + </expressions> +</x_base_cube> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/cubes/base/sample-cube.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/cubes/base/sample-cube.xml b/lens-cli/src/test/resources/schema/cubes/base/sample-cube.xml new file mode 100644 index 0000000..2d6bc34 --- /dev/null +++ b/lens-cli/src/test/resources/schema/cubes/base/sample-cube.xml @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_base_cube name="sample_cube" xmlns="uri:lens:cube:0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <properties> + <property name="sample_cube.prop" value="sample" /> + <property name="cube.sample_cube.timed.dimensions.list" value="dt" /> + </properties> + <measures> + <measure name="measure1" _type="BIGINT" /> + <measure name="measure2" _type="INT" default_aggr="SUM" /> + <measure name="measure3" _type="FLOAT" default_aggr="MAX" start_time='2013-12-12T00:00:00' /> + <measure name="measure4" _type="DOUBLE" default_aggr="MIN" /> + <measure name="measure5" _type="BIGINT"> + <tags> + <property name="category" value="primary"/> + <property name="is_ui_visible" value="true"/> + </tags> + </measure> + <measure name="measure6" _type="BIGINT"> + <tags> + <property name="category" value="secondary"/> + <property name="is_ui_visible" value="false"/> + </tags> + </measure> + </measures> + <dim_attributes> + <dim_attribute name="dim1" _type="INT" /> + <dim_attribute name="dim2" _type="INT" start_time='2013-12-01T00:00:00' /> + <dim_attribute name="dim3" _type="INT"/> + <dim_attribute name="dimDetail" _type="string" description="City name to which the customer belongs" + display_string="Customer City"> + <chain_ref_column chain_name="testdimchain" ref_col="detail" /> + <chain_ref_column chain_name="testdetailchain" ref_col="name" /> + </dim_attribute> + <dim_attribute name="dim4" _type="BIGINT"> + <tags> + <property name="category" value="primary"/> + <property name="is_ui_visible" value="true"/> + </tags> + </dim_attribute> + </dim_attributes> + <expressions> + <expression name="expr_msr5" _type="DOUBLE"> + <expr_spec expr = "measure3 + measure4" end_time='2013-12-12T00:00:00'/> + <expr_spec expr = "measure3 + measure4 + 0.01" start_time='2013-12-12T00:00:00'/> + </expression> + <expression name="expr_msr6" _type="DOUBLE"> + <tags> + <property name="category" value="primary"/> + <property name="is_ui_visible" value="true"/> + </tags> + <expr_spec expr = "measure3 + measure4" start_time='2013-12-12T00:00:00' /> + <expr_spec expr = "measure3 + measure4 + 0.01" end_time='2013-12-12T00:00:00'/> + </expression> + </expressions> + <join_chains> + <join_chain name="testdimchain"> + <paths> + <path> + <edges> + <edge> + <from table="sample_cube" column="dim1" /> + <to table="test_dim" column="id" /> + </edge> + </edges> + </path> + </paths> + </join_chain> + <join_chain name="testdetailchain"> + <paths> + <path> + <edges> + <edge> + <from table="sample_cube" column="dim2" /> + <to table="test_detail" column="id" /> + </edge> + </edges> + </path> + </paths> + </join_chain> + </join_chains> +</x_base_cube> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/dimensions/test-detail.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/dimensions/test-detail.xml b/lens-cli/src/test/resources/schema/dimensions/test-detail.xml new file mode 100644 index 0000000..b51c188 --- /dev/null +++ b/lens-cli/src/test/resources/schema/dimensions/test-detail.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_dimension name="test_detail" xmlns="uri:lens:cube:0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <attributes> + <dim_attribute name="id" _type="INT" /> + <dim_attribute name="name" _type="STRING" /> + </attributes> + + <properties> + <property name="dimension.test_dim.timed.dimension" value="dt" /> + </properties> +</x_dimension> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/dimensions/test-dimension.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/dimensions/test-dimension.xml b/lens-cli/src/test/resources/schema/dimensions/test-dimension.xml new file mode 100644 index 0000000..01de8e6 --- /dev/null +++ b/lens-cli/src/test/resources/schema/dimensions/test-dimension.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_dimension name="test_dim" xmlns="uri:lens:cube:0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <attributes> + <dim_attribute name="id" _type="INT" /> + <dim_attribute name="name" _type="STRING" /> + <dim_attribute name="detail" _type="STRING" start_time='2013-12-01T00:00:00' /> + <dim_attribute name="d2id" _type="INT" start_time='2013-12-01T00:00:00'/> + <dim_attribute name="inline" _type="STRING" > + <values>A</values> + <values>B</values> + <values>C</values> + </dim_attribute> + <dim_attribute name="location"> + <hierarchy> + <dim_attribute name="zipcode" _type="INT" /> + <dim_attribute name="city" _type="STRING" /> + <dim_attribute name="state" _type="STRING" /> + </hierarchy> + </dim_attribute> + </attributes> + + <join_chains> + <join_chain name="dim2chain"> + <paths> + <path> + <edges> + <edge> + <from table="test_dim" column="d2id" /> + <to table="test_detail" column="id" /> + </edge> + </edges> + </path> + </paths> + </join_chain> + </join_chains> + <properties> + <property name="test_dim.prop" value="test" /> + <property name="dimension.test_dim.timed.dimension" value="dt" /> + </properties> +</x_dimension> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/dimtables/dim_table.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/dimtables/dim_table.xml b/lens-cli/src/test/resources/schema/dimtables/dim_table.xml new file mode 100644 index 0000000..eb4ddfc --- /dev/null +++ b/lens-cli/src/test/resources/schema/dimtables/dim_table.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_dimension_table dimension_name="test_dim" table_name="dim_table" weight="100.0" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <columns> + <column comment="ID" name="id" _type="INT"/> + <column comment="name" name="name" _type="STRING"/> + <column comment="more details" name="detail" _type="STRING"/> + <column comment="d2 ID" name="d2id" _type="INT"/> + </columns> + <properties> + <property name="dim1.prop" value="d1"/> + </properties> + <storage_tables> + <storage_table> + <update_periods> + <update_period>HOURLY</update_period> + </update_periods> + <storage_name>local</storage_name> + <table_desc external="true" field_delimiter="," + table_location="${project.build.directory}/metastore/examples/local"> + <part_cols> + <column comment="Time column" name="dt" _type="STRING"/> + </part_cols> + <time_part_cols>dt</time_part_cols> + </table_desc> + </storage_table> + </storage_tables> +</x_dimension_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/dimtables/dim_table2.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/dimtables/dim_table2.xml b/lens-cli/src/test/resources/schema/dimtables/dim_table2.xml new file mode 100644 index 0000000..8440e28 --- /dev/null +++ b/lens-cli/src/test/resources/schema/dimtables/dim_table2.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_dimension_table dimension_name="test_dim" table_name="dim_table2" weight="100.0" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <columns> + <column comment="ID" name="id" _type="INT"/> + <column comment="name" name="name" _type="STRING"/> + <column comment="more details for dim2" name="detail2" _type="STRING"/> + </columns> + + <properties> + <property name="dim2.prop" value="d2"/> + </properties> + <storage_tables> + <storage_table> + <update_periods> + <update_period>HOURLY</update_period> + </update_periods> + <storage_name>dim_local</storage_name> + <table_desc external="true" field_delimiter="," + table_location="${project.build.directory}/metastore/examples/dim1"> + <part_cols> + <column comment="Time column" name="dt" _type="STRING"/> + </part_cols> + <time_part_cols>dt</time_part_cols> + </table_desc> + </storage_table> + </storage_tables> +</x_dimension_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/facts/fact1.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/facts/fact1.xml b/lens-cli/src/test/resources/schema/facts/fact1.xml new file mode 100644 index 0000000..b18a393 --- /dev/null +++ b/lens-cli/src/test/resources/schema/facts/fact1.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_fact_table cube_name="sample_cube" name="fact1" weight="100.0" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <columns> + <column comment="" name="dim1" _type="INT"/> + <column comment="" name="measure1" _type="BIGINT"/> + <column comment="" name="measure2" _type="INT"/> + <column comment="" name="measure3" _type="FLOAT"/> + </columns> + <properties> + <property name="fact1.prop" value="f1"/> + <property name="cube.fact.is.aggregated" value="true"/> + </properties> + <storage_tables> + <storage_table> + <update_periods> + <update_period>HOURLY</update_period> + <update_period>DAILY</update_period> + <update_period>MONTHLY</update_period> + </update_periods> + <storage_name>fact_local</storage_name> + <table_desc external="true" field_delimiter="," + table_location="${project.build.directory}/metastore/examples/fact1_local"> + <part_cols> + <column comment="Time column" name="dt" _type="STRING"/> + </part_cols> + <time_part_cols>dt</time_part_cols> + </table_desc> + </storage_table> + </storage_tables> +</x_fact_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/facts/fact_without_weight.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/facts/fact_without_weight.xml b/lens-cli/src/test/resources/schema/facts/fact_without_weight.xml new file mode 100644 index 0000000..0c124b2 --- /dev/null +++ b/lens-cli/src/test/resources/schema/facts/fact_without_weight.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_fact_table cube_name="cube_with_no_weight_facts" name="fact_without_wt" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <columns> + <column comment="" name="dim1" _type="INT"/> + <column comment="" name="measure1" _type="BIGINT"/> + <column comment="" name="measure2" _type="INT"/> + <column comment="" name="measure3" _type="FLOAT"/> + </columns> + <properties> + <property name="fact_without_wt.prop" value="f1"/> + <property name="cube.fact.is.aggregated" value="true"/> + </properties> + <storage_tables> + <storage_table> + <update_periods> + <update_period>HOURLY</update_period> + <update_period>DAILY</update_period> + <update_period>MONTHLY</update_period> + </update_periods> + <storage_name>fact_local_without_wt</storage_name> + <table_desc external="true" field_delimiter="," + table_location="${project.build.directory}/metastore/examples/fact_local_without_wt"> + <part_cols> + <column comment="Time column" name="dt" _type="STRING"/> + </part_cols> + <time_part_cols>dt</time_part_cols> + </table_desc> + </storage_table> + </storage_tables> +</x_fact_table> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/segmentations/seg1.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/segmentations/seg1.xml b/lens-cli/src/test/resources/schema/segmentations/seg1.xml new file mode 100644 index 0000000..8a39915 --- /dev/null +++ b/lens-cli/src/test/resources/schema/segmentations/seg1.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<x_segmentation cube_name="sample_cube" name="seg1" weight="100.0" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <properties> + <property name="seg1.prop" value="s1"/> + <property name="cube.segmentation.relative.start.time" value="now -10days"/> + </properties> + <segements> + <segment cube_name="cube11"> + <segment_parameters> + <property name="lens.metastore.cube.column.mapping" value="foo=bar"/> + </segment_parameters> + </segment> + <segment cube_name="cube22"> + <segment_parameters> + <property name="lens.metastore.cube.column.mapping" value="foo1=bar1"/> + </segment_parameters> + </segment> + <segment cube_name="cube33"> + <segment_parameters> + <property name="lens.metastore.cube.column.mapping" value="foo2=bar2"/> + </segment_parameters> + </segment> + </segements> +</x_segmentation> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/schema/storages/local-storage.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/schema/storages/local-storage.xml b/lens-cli/src/test/resources/schema/storages/local-storage.xml new file mode 100644 index 0000000..4dd0f0c --- /dev/null +++ b/lens-cli/src/test/resources/schema/storages/local-storage.xml @@ -0,0 +1,26 @@ +<!-- + + 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. + +--> +<x_storage classname="org.apache.lens.cube.metadata.HDFSStorage" name="local" xmlns="uri:lens:cube:0.1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> + <properties> + <property name="storage.url" value="file:///" /> + </properties> +</x_storage> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/seg1.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/seg1.xml b/lens-cli/src/test/resources/seg1.xml deleted file mode 100644 index 8a39915..0000000 --- a/lens-cli/src/test/resources/seg1.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_segmentation cube_name="sample_cube" name="seg1" weight="100.0" xmlns="uri:lens:cube:0.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <properties> - <property name="seg1.prop" value="s1"/> - <property name="cube.segmentation.relative.start.time" value="now -10days"/> - </properties> - <segements> - <segment cube_name="cube11"> - <segment_parameters> - <property name="lens.metastore.cube.column.mapping" value="foo=bar"/> - </segment_parameters> - </segment> - <segment cube_name="cube22"> - <segment_parameters> - <property name="lens.metastore.cube.column.mapping" value="foo1=bar1"/> - </segment_parameters> - </segment> - <segment cube_name="cube33"> - <segment_parameters> - <property name="lens.metastore.cube.column.mapping" value="foo2=bar2"/> - </segment_parameters> - </segment> - </segements> -</x_segmentation> http://git-wip-us.apache.org/repos/asf/lens/blob/d9884ec6/lens-cli/src/test/resources/test-detail.xml ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/resources/test-detail.xml b/lens-cli/src/test/resources/test-detail.xml deleted file mode 100644 index b51c188..0000000 --- a/lens-cli/src/test/resources/test-detail.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - 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. - ---> -<x_dimension name="test_detail" xmlns="uri:lens:cube:0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd "> - <attributes> - <dim_attribute name="id" _type="INT" /> - <dim_attribute name="name" _type="STRING" /> - </attributes> - - <properties> - <property name="dimension.test_dim.timed.dimension" value="dt" /> - </properties> -</x_dimension>
