/** * Copyright (c) 2009-2011 VMware, Inc. All Rights Reserved. * * Licensed 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.springsource.insight.plugin.cassandra; import com.springsource.insight.collection.test.AbstractCollectionTestSupport; import com.springsource.insight.intercept.operation.Operation; import com.springsource.insight.intercept.operation.OperationMap; import com.springsource.insight.intercept.operation.SourceCodeLocation; import org.junit.Test; public class CassandraOperationFinalizerTest extends AbstractCollectionTestSupport { @Test public void testSetParameterInSequence() { Operation operation = getTestOperation("testSetParameterInSequence"); CassandraOperationFinalizer.addParam(operation, 1, "a"); // this is 1-based index CassandraOperationFinalizer.addParam(operation, 2, "b"); // this is 1-based index OperationMap params = operation.get(CassandraOperationFinalizer.PARAMS_VALUES, OperationMap.class); assertNotNull("Missing parameters", params); assertEquals("Mismatched number of parameters", 2, params.size()); assertEquals("Mismatched 1st parameter", "a", params.get("P_1")); assertEquals("Mismatched 2nd parameter", "b", params.get("P_2")); } @Test public void testSetParameterOutOfSequence() { Operation operation = getTestOperation("testSetParameterOutOfSequence"); CassandraOperationFinalizer.addParam(operation, 2, "b"); // this is 1-based index CassandraOperationFinalizer.addParam(operation, 1, "a"); // this is 1-based index OperationMap params = operation.get(CassandraOperationFinalizer.PARAMS_VALUES, OperationMap.class); assertNotNull("Missing parameters list", params); assertEquals("Mismatched number of parameters", 2, params.size()); assertEquals("Mismatched 1st parameter", "a", params.get("P_1")); assertEquals("Mismatched 2nd parameter", "b", params.get("P_2")); } @Test public void testSetMappedParameter() { Operation operation = getTestOperation("testSetMappedParameter"); CassandraOperationFinalizer.addParam(operation, "key1", "value1"); CassandraOperationFinalizer.addParam(operation, "key2", "value2"); OperationMap params = operation.get(CassandraOperationFinalizer.PARAMS_VALUES, OperationMap.class); assertNotNull("Missing parameters map", params); assertEquals("Mismatched mapped params size", 2, params.size()); assertEquals("Mismatched 1st key value", "value1", params.get("key1")); assertEquals("Mismatched 2nd key value", "value2", params.get("key2")); } @Test public void testCreateLabelSelect() { assertEquals("CQL SELECT (TABLE)", CassandraOperationFinalizer.createLabel("select * from table")); assertEquals("CQL SELECT (TABLE)", CassandraOperationFinalizer.createLabel("select * from table t")); assertEquals("CQL SELECT (TABLE)", CassandraOperationFinalizer.createLabel("select * from table t where x")); assertEquals("CQL SELECT", CassandraOperationFinalizer.createLabel("SELECT * FROM")); } @Test public void testCreateLabelDelete() { assertEquals("CQL DELETE (TABLE)", CassandraOperationFinalizer.createLabel("delete from table where ...")); assertEquals("CQL DELETE (TABLE)", CassandraOperationFinalizer.createLabel("delete from table")); assertEquals("CQL DELETE", CassandraOperationFinalizer.createLabel("DELETE FROM")); } @Test public void testCreateLabelUpdate() { assertEquals("CQL UPDATE (TABLE)", CassandraOperationFinalizer.createLabel("update table set ...")); assertEquals("CQL UPDATE (TABLE)", CassandraOperationFinalizer.createLabel("update table")); assertEquals("CQL UPDATE", CassandraOperationFinalizer.createLabel("UPDATE")); } @Test public void testCreateLabelCreateTable() { assertEquals("CQL CREATE TABLE (FUBAR)", CassandraOperationFinalizer.createLabel("CREATE TABLE FUBAR(BAZ)")); assertEquals("CQL CREATE TABLE", CassandraOperationFinalizer.createLabel("CREATE TABLE")); assertEquals("CQL CREATE TABLE IF NOT EXISTS (FUBAR)", CassandraOperationFinalizer.createLabel("CREATE TABLE IF NOT EXISTS FUBAR(BAZ)")); } @Test public void testCreateLabelCreateKeyspace() { assertEquals("CQL CREATE KEYSPACE (FUBAR)", CassandraOperationFinalizer.createLabel("CREATE KEYSPACE FUBAR WITH REPLICATION")); assertEquals("CQL CREATE KEYSPACE", CassandraOperationFinalizer.createLabel("CREATE KEYSPACE")); assertEquals("CQL CREATE KEYSPACE IF NOT EXISTS (FUBAR)", CassandraOperationFinalizer.createLabel("CREATE KEYSPACE IF NOT EXISTS FUBAR")); } @Test public void testCreateLabelAlterTable() { assertEquals("CQL ALTER TABLE (FUBAR)", CassandraOperationFinalizer.createLabel("alter table fubar modify column x")); assertEquals("CQL ALTER TABLE", CassandraOperationFinalizer.createLabel("ALTER TABLE")); } @Test public void testCreateLabelDropTable() { assertEquals("CQL DROP TABLE (FUBAR)", CassandraOperationFinalizer.createLabel("drop table fubar")); assertEquals("CQL DROP TABLE IF EXISTS (FUBAR)", CassandraOperationFinalizer.createLabel("drop table if exists fubar")); assertEquals("CQL DROP TABLE", CassandraOperationFinalizer.createLabel("drop table")); } @Test public void testCreateLabelDropIndex() { assertEquals("CQL DROP INDEX (FUBAR)", CassandraOperationFinalizer.createLabel("drop index fubar")); assertEquals("CQL DROP INDEX IF EXISTS (FUBAR)", CassandraOperationFinalizer.createLabel("drop index if exists fubar")); assertEquals("CQL DROP INDEX", CassandraOperationFinalizer.createLabel("drop index")); } @Test public void testCreateLabelCreateIndex() { assertEquals("CQL CREATE INDEX (FUBAR)", CassandraOperationFinalizer.createLabel("create index fubar")); assertEquals("CQL CREATE INDEX IF NOT EXISTS (FUBAR)", CassandraOperationFinalizer.createLabel("create index if not exists fubar")); assertEquals("CQL CREATE INDEX", CassandraOperationFinalizer.createLabel("CREATE INDEX")); assertEquals("CQL CREATE CUSTOM INDEX (BARFO)", CassandraOperationFinalizer.createLabel("create custom index barfo")); assertEquals("CQL CREATE CUSTOM INDEX", CassandraOperationFinalizer.createLabel("CREATE CUSTOM INDEX")); } @Test public void testCreateLabelDml() { assertEquals("CQL DML", CassandraOperationFinalizer.createLabel("CREATE TYPE keyspace.type_name")); assertEquals("CQL DML", CassandraOperationFinalizer.createLabel("CREATE USER BARFO")); } @Test public void testCreateLabelStatement() { assertEquals("CQL STATEMENT", CassandraOperationFinalizer.createLabel("BEGIN UNLOGGED BATCH INSERT x APPLY BATCH;")); } private Operation getTestOperation(String methodName) { return new Operation() .type(CassandraExternalResourceAnalyzer.TYPE) .label(methodName) .sourceCodeLocation(new SourceCodeLocation(getClass().getName(), methodName, -1)) ; } }