@@ -39,6 +39,12 @@ def setup
3939 @session . execute ( "CREATE TABLE simplex.custom (f1 int PRIMARY KEY," \
4040 " f2 'org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.UUIDType,org.apache.cassandra.db.marshal.UTF8Type)')" )
4141 @listener . wait_for_table ( 'simplex' , 'custom' )
42+ @session . execute ( "CREATE TABLE simplex.test1 (key text, value text, PRIMARY KEY(key))" )
43+ @listener . wait_for_table ( 'simplex' , 'test1' )
44+ @session . execute ( "CREATE TABLE simplex.test2 (key text, value text, PRIMARY KEY(key))" )
45+ @listener . wait_for_table ( 'simplex' , 'test2' )
46+ @session . execute ( "CREATE TABLE simplex.audit (key timeuuid, keyspace_name text, table_name text, primary_key text, PRIMARY KEY(key))" )
47+ @listener . wait_for_table ( 'simplex' , 'audit' )
4248 end
4349
4450 def teardown
@@ -63,7 +69,7 @@ def test_can_retrieve_keyspace_metadata
6369 assert_equal 1 , ks_meta . replication . options [ 'replication_factor' ] . to_i
6470 assert ks_meta . durable_writes?
6571 assert ks_meta . has_table? ( 'users' )
66- assert_equal 4 , ks_meta . tables . size
72+ assert_equal 7 , ks_meta . tables . size
6773
6874 ks_cql = Regexp . new ( /CREATE KEYSPACE simplex WITH replication = {'class': 'SimpleStrategy', \
6975 'replication_factor': '1'} AND durable_writes = true;/)
@@ -342,4 +348,42 @@ def test_table_metadata_contains_extensions
342348 assert_empty table_meta . options . extensions
343349 end
344350
351+ # Test for retrieving trigger metadata
352+ #
353+ # test_can_retrieve_trigger_metadata tests that all pieces of trigger metadata can be retrieved. It first creates a
354+ # simple trigger. It then goes through each piece of the trigger metadata and verifies that each piece is as expected.
355+ # It finally creates another trigger with the same name, on a different table and verifies that it is retrieved and
356+ # complete.
357+ #
358+ # @since 3.1.0
359+ # @jira_ticket RUBY-187
360+ # @expected_result trigger metadata should be retrieved.
361+ #
362+ # @test_category metadata
363+ #
364+ def test_can_retrieve_trigger_metadata
365+ skip ( "Triggers were introduced in Cassandra 2.0" ) if CCM . cassandra_version < '2.0.0'
366+
367+ # trigger1, on test1 table
368+ @session . execute ( "CREATE TRIGGER trigger1 ON simplex.test1 USING 'org.apache.cassandra.triggers.AuditTrigger'" )
369+ @listener . wait_for_trigger ( 'simplex' , 'test1' , 'trigger1' )
370+
371+ assert @cluster . keyspace ( 'simplex' ) . table ( 'test1' ) . has_trigger? ( 'trigger1' )
372+ trigger_meta = @cluster . keyspace ( 'simplex' ) . table ( 'test1' ) . trigger ( 'trigger1' )
373+ assert_equal 'trigger1' , trigger_meta . name
374+ assert_equal 'test1' , trigger_meta . table . name
375+ assert_equal 'org.apache.cassandra.triggers.AuditTrigger' , trigger_meta . options [ 'class' ]
376+
377+ # trigger1, on test2 table
378+ @session . execute ( "CREATE TRIGGER trigger1 ON simplex.test2 USING 'org.apache.cassandra.triggers.AuditTrigger'" )
379+ @listener . wait_for_trigger ( 'simplex' , 'test2' , 'trigger1' )
380+
381+ assert @cluster . keyspace ( 'simplex' ) . table ( 'test2' ) . has_trigger? ( 'trigger1' )
382+ trigger_meta2 = @cluster . keyspace ( 'simplex' ) . table ( 'test2' ) . trigger ( 'trigger1' )
383+ assert_equal 'trigger1' , trigger_meta2 . name
384+ assert_equal 'test2' , trigger_meta2 . table . name
385+ assert_equal 'org.apache.cassandra.triggers.AuditTrigger' , trigger_meta2 . options [ 'class' ]
386+
387+ refute_equal trigger_meta , trigger_meta2
388+ end
345389end
0 commit comments