diff --git a/src/main/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanName.java b/src/main/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanName.java index c5c61a9..0484e22 100644 --- a/src/main/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanName.java +++ b/src/main/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanName.java @@ -151,15 +151,15 @@ public String querySpanName(String query) { returns the enum for the found manipulation method. */ private ManipulationMethod getManipulationMethod(String query) { - ManipulationMethod retMethod = ManipulationMethod.NOT_FOUND; - String upperQuery = query.toUpperCase(); - for (String method : CASSANDRA_MANIPULATION_METHODS) { - if (upperQuery.contains(method)) { - retMethod = ManipulationMethod.valueOf(method.replace(' ', '_')); - break; + String[] queryParts = query.toUpperCase().split("\\s+"); + for (String queryPart : queryParts) { + for (String method : CASSANDRA_MANIPULATION_METHODS) { + if (queryPart.contains(method)) { + return ManipulationMethod.valueOf(method); + } } } - return retMethod; + return ManipulationMethod.NOT_FOUND; } /* @@ -168,15 +168,14 @@ private ManipulationMethod getManipulationMethod(String query) { the enum for the found definition method. */ private DefinitionMethod getDefininitionMethod(String query) { - DefinitionMethod retMethod = DefinitionMethod.NOT_FOUND; - String upperQuery = query.toUpperCase(); + String upperQuery = query.toUpperCase().replaceAll("\\s{2,}", " ").trim(); + for (String method : CASSANDRA_DEFINITION_METHODS) { - if (upperQuery.contains(method)) { - retMethod = DefinitionMethod.valueOf(method.replace(' ', '_')); - break; + if (upperQuery.startsWith(method)) { + return DefinitionMethod.valueOf(method.replace(' ', '_')); } } - return retMethod; + return DefinitionMethod.NOT_FOUND; } /* @@ -187,7 +186,7 @@ private String findTargetEntityAfter(String query, String after) { // Regex to find the first word (containing only alphanumeric, period, or underscore characters) // that occurs after the String after Pattern findTablePattern = Pattern.compile(Pattern.quote(after) + " ([\\w.]+)"); - Matcher matcher = findTablePattern.matcher(query); + Matcher matcher = findTablePattern.matcher(query.replaceAll("\\s{2,}", " ")); if (matcher.find()) { return matcher.group(1); } else { diff --git a/src/test/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanNameTest.java b/src/test/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanNameTest.java index 3a572b1..ed7f884 100644 --- a/src/test/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanNameTest.java +++ b/src/test/java/io/opentracing/contrib/cassandra/nameprovider/QueryMethodTableSpanNameTest.java @@ -24,138 +24,141 @@ public void manipulationMethodTest() { QuerySpanNameProvider querySpanNameProvider = QueryMethodTableSpanName.newBuilder().build(); // SELECT assertEquals("Cassandra.SELECT - test.table_name", - querySpanNameProvider.querySpanName("SELECT * FROM test.table_name;")); + querySpanNameProvider.querySpanName(" SELECT * FROM test.table_name;")); assertEquals("Cassandra.SELECT - N/A", querySpanNameProvider.querySpanName("SELECT *;")); - assertEquals("Cassandra.SELECT - N/A", querySpanNameProvider.querySpanName("SELECT * FROM ;")); + assertEquals("Cassandra.SELECT - N/A", querySpanNameProvider.querySpanName(" SELECT * FROM ;")); // INSERT assertEquals("Cassandra.INSERT - test.table_name", querySpanNameProvider.querySpanName("INSERT INTO test.table_name;")); assertEquals("Cassandra.INSERT - N/A", querySpanNameProvider.querySpanName("INSERT;")); - assertEquals("Cassandra.INSERT - N/A", querySpanNameProvider.querySpanName("INSERT INTO ;")); + assertEquals("Cassandra.INSERT - batch_table", + querySpanNameProvider.querySpanName(" INSERT INTO batch_table;")); // UPDATE assertEquals("Cassandra.UPDATE - test.table_name", querySpanNameProvider.querySpanName("UPDATE test.table_name;")); assertEquals("Cassandra.UPDATE - N/A", querySpanNameProvider.querySpanName("UPDATE;")); - assertEquals("Cassandra.UPDATE - N/A", querySpanNameProvider.querySpanName("UPDATE ;")); + assertEquals("Cassandra.UPDATE - N/A", querySpanNameProvider.querySpanName(" UPDATE ;")); // DELETE assertEquals("Cassandra.DELETE - test.table_name", querySpanNameProvider.querySpanName("DELETE * FROM test.table_name;")); assertEquals("Cassandra.DELETE - N/A", querySpanNameProvider.querySpanName("DELETE *;")); - assertEquals("Cassandra.DELETE - N/A", querySpanNameProvider.querySpanName("DELETE * FROM ;")); + assertEquals("Cassandra.DELETE - N/A", + querySpanNameProvider.querySpanName(" DELETE * FROM ;")); // BATCH - assertEquals("Cassandra.BATCH", querySpanNameProvider.querySpanName("BEGIN BATCH;")); - assertEquals("Cassandra.BATCH", querySpanNameProvider.querySpanName("APPLY BATCH;")); + assertEquals("Cassandra.BATCH", querySpanNameProvider.querySpanName(" BEGIN BATCH;")); + assertEquals("Cassandra.BATCH", querySpanNameProvider.querySpanName("APPLY BATCH;")); } @Test public void definitionMethodTest() { - QuerySpanNameProvider querySpanNameProvider = new QueryMethodTableSpanName().newBuilder() + QuerySpanNameProvider querySpanNameProvider = QueryMethodTableSpanName.newBuilder() .build(); // USE assertEquals("Cassandra.USE - test", querySpanNameProvider.querySpanName("USE test;")); assertEquals("Cassandra.USE - N/A", querySpanNameProvider.querySpanName("USE;")); assertEquals("Cassandra.USE - N/A", querySpanNameProvider.querySpanName("USE ;")); // CREATE_KEYSPACE + assertEquals("Cassandra.CREATE_KEYSPACE - use_test", + querySpanNameProvider.querySpanName(" CREATE KEYSPACE use_test;")); assertEquals("Cassandra.CREATE_KEYSPACE - test", - querySpanNameProvider.querySpanName("CREATE KEYSPACE test;")); - assertEquals("Cassandra.CREATE_KEYSPACE - test", - querySpanNameProvider.querySpanName("CREATE KEYSPACE IF NOT EXISTS test;")); + querySpanNameProvider.querySpanName("CREATE KEYSPACE IF NOT EXISTS test;")); assertEquals("Cassandra.CREATE_KEYSPACE - N/A", querySpanNameProvider.querySpanName("CREATE KEYSPACE")); assertEquals("Cassandra.CREATE_KEYSPACE - N/A", - querySpanNameProvider.querySpanName("CREATE KEYSPACE ;")); + querySpanNameProvider.querySpanName(" CREATE KEYSPACE ;")); // ALTER_KEYSPACE - assertEquals("Cassandra.ALTER_KEYSPACE - test", - querySpanNameProvider.querySpanName("ALTER KEYSPACE test;")); + assertEquals("Cassandra.ALTER_KEYSPACE - use_test", + querySpanNameProvider.querySpanName("ALTER KEYSPACE use_test;")); assertEquals("Cassandra.ALTER_KEYSPACE - N/A", - querySpanNameProvider.querySpanName("ALTER KEYSPACE;")); + querySpanNameProvider.querySpanName("ALTER KEYSPACE;")); assertEquals("Cassandra.ALTER_KEYSPACE - N/A", querySpanNameProvider.querySpanName("ALTER KEYSPACE ;")); // DROP_KEYSPACE assertEquals("Cassandra.DROP_KEYSPACE - test", - querySpanNameProvider.querySpanName("DROP KEYSPACE test;")); + querySpanNameProvider.querySpanName("DROP KEYSPACE test;")); assertEquals("Cassandra.DROP_KEYSPACE - test", - querySpanNameProvider.querySpanName("DROP KEYSPACE IF EXISTS test;")); + querySpanNameProvider.querySpanName("DROP KEYSPACE IF EXISTS test;")); assertEquals("Cassandra.DROP_KEYSPACE - N/A", - querySpanNameProvider.querySpanName("DROP KEYSPACE;")); + querySpanNameProvider.querySpanName("DROP KEYSPACE;")); assertEquals("Cassandra.DROP_KEYSPACE - N/A", querySpanNameProvider.querySpanName("DROP KEYSPACE ;")); // CREATE_TABLE assertEquals("Cassandra.CREATE_TABLE - test.table_name", - querySpanNameProvider.querySpanName("CREATE TABLE test.table_name;")); + querySpanNameProvider.querySpanName("CREATE TABLE test.table_name;")); assertEquals("Cassandra.CREATE_TABLE - test.table_name", - querySpanNameProvider.querySpanName("CREATE TABLE IF NOT EXISTS test.table_name;")); + querySpanNameProvider.querySpanName("CREATE TABLE IF NOT EXISTS test.table_name;")); assertEquals("Cassandra.CREATE_TABLE - N/A", querySpanNameProvider.querySpanName("CREATE TABLE;")); assertEquals("Cassandra.CREATE_TABLE - N/A", - querySpanNameProvider.querySpanName("CREATE TABLE ;")); + querySpanNameProvider.querySpanName("CREATE TABLE ;")); // ALTER_TABLE assertEquals("Cassandra.ALTER_TABLE - test.table_name", querySpanNameProvider.querySpanName("ALTER TABLE test.table_name;")); assertEquals("Cassandra.ALTER_TABLE - N/A", - querySpanNameProvider.querySpanName("ALTER TABLE;")); + querySpanNameProvider.querySpanName(" ALTER TABLE;")); assertEquals("Cassandra.ALTER_TABLE - N/A", - querySpanNameProvider.querySpanName("ALTER TABLE ;")); + querySpanNameProvider.querySpanName("ALTER TABLE ;")); // DROP_TABLE assertEquals("Cassandra.DROP_TABLE - test.table_name", - querySpanNameProvider.querySpanName("DROP TABLE test.table_name;")); + querySpanNameProvider.querySpanName(" DROP TABLE test.table_name;")); assertEquals("Cassandra.DROP_TABLE - test.table_name", - querySpanNameProvider.querySpanName("DROP TABLE IF EXISTS test.table_name;")); + querySpanNameProvider.querySpanName(" DROP TABLE IF EXISTS test.table_name;")); assertEquals("Cassandra.DROP_TABLE - N/A", querySpanNameProvider.querySpanName("DROP TABLE;")); assertEquals("Cassandra.DROP_TABLE - N/A", querySpanNameProvider.querySpanName("DROP TABLE ;")); // TRUNCATE assertEquals("Cassandra.TRUNCATE - test.table_name", querySpanNameProvider.querySpanName("TRUNCATE test.table_name;")); assertEquals("Cassandra.TRUNCATE - test.table_name", - querySpanNameProvider.querySpanName("TRUNCATE TABLE test.table_name;")); + querySpanNameProvider.querySpanName(" TRUNCATE TABLE test.table_name;")); assertEquals("Cassandra.TRUNCATE - N/A", querySpanNameProvider.querySpanName("TRUNCATE;")); assertEquals("Cassandra.TRUNCATE - N/A", querySpanNameProvider.querySpanName("TRUNCATE ;")); // CREATE_INDEX assertEquals("Cassandra.CREATE_INDEX - test_index", querySpanNameProvider.querySpanName("CREATE INDEX test_index;")); assertEquals("Cassandra.CREATE_INDEX - test_index", - querySpanNameProvider.querySpanName("CREATE INDEX IF NOT EXISTS test_index;")); + querySpanNameProvider.querySpanName("CREATE INDEX IF NOT EXISTS test_index;")); assertEquals("Cassandra.CREATE_INDEX - N/A", - querySpanNameProvider.querySpanName("CREATE INDEX;")); + querySpanNameProvider.querySpanName(" CREATE INDEX;")); assertEquals("Cassandra.CREATE_INDEX - N/A", querySpanNameProvider.querySpanName("CREATE INDEX ;")); // DROP_INDEX assertEquals("Cassandra.DROP_INDEX - test_index", - querySpanNameProvider.querySpanName("DROP INDEX test_index;")); + querySpanNameProvider.querySpanName("DROP INDEX test_index;")); assertEquals("Cassandra.DROP_INDEX - test_index", - querySpanNameProvider.querySpanName("DROP INDEX IF EXISTS test_index;")); - assertEquals("Cassandra.DROP_INDEX - N/A", querySpanNameProvider.querySpanName("DROP INDEX;")); - assertEquals("Cassandra.DROP_INDEX - N/A", querySpanNameProvider.querySpanName("DROP INDEX ;")); + querySpanNameProvider.querySpanName("DROP INDEX IF EXISTS test_index;")); + assertEquals("Cassandra.DROP_INDEX - N/A", querySpanNameProvider.querySpanName(" DROP INDEX;")); + assertEquals("Cassandra.DROP_INDEX - N/A", + querySpanNameProvider.querySpanName("DROP INDEX ;")); // CREATE_MATERIALIZED_VIEW assertEquals("Cassandra.CREATE_MATERIALIZED_VIEW - view_name", - querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW view_name;")); + querySpanNameProvider.querySpanName(" CREATE MATERIALIZED VIEW view_name;")); assertEquals("Cassandra.CREATE_MATERIALIZED_VIEW - view_name", - querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW IF NOT EXISTS view_name;")); + querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW IF NOT EXISTS view_name;")); assertEquals("Cassandra.CREATE_MATERIALIZED_VIEW - N/A", - querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW;")); + querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW;")); assertEquals("Cassandra.CREATE_MATERIALIZED_VIEW - N/A", - querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW ;")); + querySpanNameProvider.querySpanName("CREATE MATERIALIZED VIEW ;")); // ALTER_MATERIALIZED_VIEW assertEquals("Cassandra.ALTER_MATERIALIZED_VIEW - view_name", - querySpanNameProvider.querySpanName("ALTER MATERIALIZED VIEW view_name;")); + querySpanNameProvider.querySpanName(" ALTER MATERIALIZED VIEW view_name;")); assertEquals("Cassandra.ALTER_MATERIALIZED_VIEW - N/A", querySpanNameProvider.querySpanName("ALTER MATERIALIZED VIEW;")); assertEquals("Cassandra.ALTER_MATERIALIZED_VIEW - N/A", - querySpanNameProvider.querySpanName("ALTER MATERIALIZED VIEW ;")); + querySpanNameProvider.querySpanName("ALTER MATERIALIZED VIEW ;")); // DROP_MATERIALIZED_VIEW assertEquals("Cassandra.DROP_MATERIALIZED_VIEW - view_name", - querySpanNameProvider.querySpanName("DROP MATERIALIZED VIEW view_name;")); + querySpanNameProvider.querySpanName(" DROP MATERIALIZED VIEW view_name;")); assertEquals("Cassandra.DROP_MATERIALIZED_VIEW - view_name", - querySpanNameProvider.querySpanName("DROP MATERIALIZED VIEW IF EXISTS view_name;")); + querySpanNameProvider.querySpanName("DROP MATERIALIZED VIEW IF EXISTS view_name;")); assertEquals("Cassandra.DROP_MATERIALIZED_VIEW - N/A", - querySpanNameProvider.querySpanName("DROP MATERIALIZED VIEW;")); + querySpanNameProvider.querySpanName(" DROP MATERIALIZED VIEW;")); assertEquals("Cassandra.DROP_MATERIALIZED_VIEW - N/A", - querySpanNameProvider.querySpanName("DROP MATERIALIZED VIEW ;")); + querySpanNameProvider.querySpanName("DROP MATERIALIZED VIEW ;")); } @Test public void testInvalaidMethod() { - QuerySpanNameProvider querySpanNameProvider = new QueryMethodTableSpanName().newBuilder() + QuerySpanNameProvider querySpanNameProvider = QueryMethodTableSpanName.newBuilder() .build(); assertEquals("Cassandra", querySpanNameProvider.querySpanName("")); assertEquals("Cassandra", querySpanNameProvider.querySpanName(null));