Edward Capriolo created CASSANDRA-6789:
------------------------------------------
Summary: Triggers can not be added from thrift
Key: CASSANDRA-6789
URL: https://issues.apache.org/jira/browse/CASSANDRA-6789
Project: Cassandra
Issue Type: Bug
Reporter: Edward Capriolo
Assignee: Edward Capriolo
While playing with groovy triggers, I determined that you can not add triggers
from thrift, unless I am doing something wrong. (I see no coverage of this
feature from thrift/python)
https://github.com/edwardcapriolo/cassandra/compare/trigger_coverage?expand=1
{code}
package org.apache.cassandra.triggers;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.Assert;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.service.EmbeddedCassandraService;
import org.apache.cassandra.thrift.CassandraServer;
import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.thrift.KsDef;
import org.apache.cassandra.thrift.ThriftSessionManager;
import org.apache.cassandra.thrift.TriggerDef;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.thrift.TException;
import org.junit.BeforeClass;
import org.junit.Test;
public class TriggerTest extends SchemaLoader
{
private static CassandraServer server;
@BeforeClass
public static void setup() throws IOException, TException
{
Schema.instance.clear(); // Schema are now written on disk and will be
reloaded
new EmbeddedCassandraService().start();
ThriftSessionManager.instance.setCurrentSocket(new
InetSocketAddress(9160));
server = new CassandraServer();
server.set_keyspace("Keyspace1");
}
@Test
public void createATrigger() throws TException
{
TriggerDef td = new TriggerDef();
td.setName("gimme5");
Map<String,String> options = new HashMap<>();
options.put("class", "org.apache.cassandra.triggers.ITriggerImpl");
td.setOptions(options);
CfDef cfDef = new CfDef();
cfDef.setKeyspace("Keyspace1");
cfDef.setTriggers(Arrays.asList(td));
cfDef.setName("triggercf");
server.system_add_column_family(cfDef);
KsDef keyspace1 = server.describe_keyspace("Keyspace1");
CfDef triggerCf = null;
for (CfDef cfs :keyspace1.cf_defs){
if (cfs.getName().equals("triggercf")){
triggerCf=cfs;
}
}
Assert.assertNotNull(triggerCf);
Assert.assertEquals(1, triggerCf.getTriggers().size());
}
}
{code}
junit.framework.AssertionFailedError: expected:<1> but was:<0>
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)