/***************************************************************************** * * Copyright (C) Zenoss, Inc. 2010-2011, all rights reserved. * * This content is made available according to terms specified in * License.zenoss under the directory where your Zenoss product is installed. * ****************************************************************************/ package org.zenoss.zep.dao.impl; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.zenoss.protobufs.zep.Zep.EventTrigger; import org.zenoss.protobufs.zep.Zep.EventTriggerSubscription; import org.zenoss.protobufs.zep.Zep.Rule; import org.zenoss.protobufs.zep.Zep.RuleType; import org.zenoss.zep.ZepException; import org.zenoss.zep.dao.EventTriggerDao; import org.zenoss.zep.dao.EventTriggerSubscriptionDao; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import static org.junit.Assert.*; @ContextConfiguration({ "classpath:zep-config.xml" }) public class EventTriggerDaoImplIT extends AbstractTransactionalJUnit4SpringContextTests { @Autowired protected EventTriggerDao dao; @Autowired protected EventTriggerSubscriptionDao subscriptionDao; @Test public void testInsert() throws ZepException, IOException { EventTrigger.Builder triggerBuilder = EventTrigger.newBuilder(); triggerBuilder.setUuid(UUID.randomUUID().toString()); Rule.Builder ruleBuilder = Rule.newBuilder(); ruleBuilder.setApiVersion(5); ruleBuilder.setSource("my content"); ruleBuilder.setType(RuleType.RULE_TYPE_JYTHON); triggerBuilder.setRule(ruleBuilder.build()); EventTrigger trigger = triggerBuilder.build(); dao.create(trigger); EventTrigger triggerFromDb = dao.findByUuid(trigger.getUuid()); assertEquals(trigger.getUuid(), triggerFromDb.getUuid()); assertEquals(trigger.getRule(), triggerFromDb.getRule()); boolean foundInAll = false; for (EventTrigger t : dao.findAll()) { if (t.getUuid().equals(trigger.getUuid())) { foundInAll = true; break; } } assertTrue(foundInAll); dao.delete(trigger.getUuid()); assertNull(dao.findByUuid(trigger.getUuid())); } @Test public void testModify() throws ZepException { EventTrigger.Builder triggerBuilder = EventTrigger.newBuilder(); triggerBuilder.setUuid(UUID.randomUUID().toString()); Rule.Builder ruleBuilder = Rule.newBuilder(); ruleBuilder.setApiVersion(5); ruleBuilder.setSource("my content"); ruleBuilder.setType(RuleType.RULE_TYPE_JYTHON); triggerBuilder.setRule(ruleBuilder.build()); triggerBuilder.setEnabled(true); EventTrigger trigger = triggerBuilder.build(); dao.create(trigger); EventTrigger triggerFromDb = dao.findByUuid(trigger.getUuid()); assertEquals(trigger, triggerFromDb); for (EventTrigger t : dao.findAll()) { if (t.getUuid().equals(trigger.getUuid())) { assertEquals(trigger, t); break; } } trigger = EventTrigger.newBuilder(trigger).setEnabled(false).build(); dao.modify(trigger); triggerFromDb = dao.findByUuid(trigger.getUuid()); assertEquals(trigger, triggerFromDb); } @Test public void testFindEnabled() throws ZepException { final EventTrigger enabled; { EventTrigger.Builder triggerBuilder = EventTrigger.newBuilder(); triggerBuilder.setUuid(UUID.randomUUID().toString()); Rule.Builder ruleBuilder = Rule.newBuilder(); ruleBuilder.setApiVersion(5); ruleBuilder.setSource("my content"); ruleBuilder.setType(RuleType.RULE_TYPE_JYTHON); triggerBuilder.setRule(ruleBuilder.build()); triggerBuilder.setEnabled(true); enabled = triggerBuilder.build(); } final EventTrigger disabled; { EventTrigger.Builder triggerBuilder = EventTrigger.newBuilder(); triggerBuilder.setUuid(UUID.randomUUID().toString()); Rule.Builder ruleBuilder = Rule.newBuilder(); ruleBuilder.setApiVersion(5); ruleBuilder.setSource("my content"); ruleBuilder.setType(RuleType.RULE_TYPE_JYTHON); triggerBuilder.setRule(ruleBuilder.build()); triggerBuilder.setEnabled(false); disabled = triggerBuilder.build(); } dao.create(enabled); dao.create(disabled); boolean foundEnabled = false; List<EventTrigger> enabledTriggers = dao.findAllEnabled(); for (EventTrigger triggerFromDb : enabledTriggers) { if (triggerFromDb.getUuid().equals(disabled.getUuid())) { fail("Shouldn't have returned disabled trigger"); } if (triggerFromDb.equals(enabled)) { foundEnabled = true; } } assertTrue("Failed to find enabled trigger", foundEnabled); } private void compareSubscriptions(EventTrigger triggerFromDb, Map<String,EventTriggerSubscription> subscriptionMap) { final Map<String,EventTriggerSubscription> subscriptionMapFromDb = new HashMap<String,EventTriggerSubscription>(); for (EventTriggerSubscription subscriptionFromDb : triggerFromDb.getSubscriptionsList()) { subscriptionMapFromDb.put(subscriptionFromDb.getUuid(), subscriptionFromDb); } assertEquals(subscriptionMap, subscriptionMapFromDb); } @Test public void testFindWithSubscriptions() throws ZepException { EventTrigger.Builder triggerBuilder = EventTrigger.newBuilder(); triggerBuilder.setUuid(UUID.randomUUID().toString()); Rule.Builder ruleBuilder = Rule.newBuilder(); ruleBuilder.setApiVersion(5); ruleBuilder.setSource("my content"); ruleBuilder.setType(RuleType.RULE_TYPE_JYTHON); triggerBuilder.setRule(ruleBuilder.build()); triggerBuilder.setEnabled(true); EventTrigger enabled = triggerBuilder.build(); dao.create(enabled); // Create subscriptions EventTriggerSubscription sub1 = EventTriggerSubscription.newBuilder().setDelaySeconds(30).setRepeatSeconds(60) .setUuid(UUID.randomUUID().toString()).setSendInitialOccurrence(true) .setTriggerUuid(triggerBuilder.getUuid()).setSubscriberUuid(UUID.randomUUID().toString()).build(); subscriptionDao.create(sub1); EventTriggerSubscription sub2 = EventTriggerSubscription.newBuilder().setDelaySeconds(0).setRepeatSeconds(0) .setUuid(UUID.randomUUID().toString()).setSendInitialOccurrence(false) .setTriggerUuid(triggerBuilder.getUuid()).setSubscriberUuid(UUID.randomUUID().toString()).build(); subscriptionDao.create(sub2); Map<String,EventTriggerSubscription> subscriptionMap = new HashMap<String,EventTriggerSubscription>(); subscriptionMap.put(sub1.getUuid(), sub1); subscriptionMap.put(sub2.getUuid(), sub2); compareSubscriptions(dao.findByUuid(enabled.getUuid()), subscriptionMap); compareSubscriptions(dao.findAllEnabled().get(0), subscriptionMap); compareSubscriptions(dao.findAll().get(0), subscriptionMap); } }