blob: 0680c5d1f0c6b2a8e34b600d6ff97ad78569d7e3 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.eagle.metadata.service;
import org.apache.commons.collections.CollectionUtils;
import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
import org.apache.eagle.metadata.model.PolicyEntity;
import org.apache.eagle.metadata.service.memory.PolicyEntityServiceMemoryImpl;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class TestPolicyEntityServiceMemoryImpl {
private PolicyEntityService policyEntityService = new PolicyEntityServiceMemoryImpl();
@Test
public void test() {
// define a prototype policy without site info
PolicyDefinition policyDefinition = new PolicyDefinition();
policyDefinition.setName("policy1");
PolicyDefinition.Definition definition = new PolicyDefinition.Definition("siddhi",
"from STREAM select * insert into out");
policyDefinition.setDefinition(definition);
policyDefinition.setInputStreams(Arrays.asList("STREAM"));
policyDefinition.setOutputStreams(Arrays.asList("out"));
// define publisher list
List<String> alertPublisherIds = Arrays.asList("slack");
// create
PolicyEntity policyEntity = new PolicyEntity();
policyEntity.setDefinition(policyDefinition);
policyEntity.setAlertPublishmentIds(alertPublisherIds);
PolicyEntity res = policyEntityService.createOrUpdatePolicyProto(policyEntity);
Assert.assertTrue(res.getDefinition().equals(policyDefinition));
Assert.assertTrue(CollectionUtils.isEqualCollection(res.getAlertPublishmentIds(), alertPublisherIds));
Collection<PolicyEntity> policies = policyEntityService.getAllPolicyProto();
Assert.assertTrue(policies.size() == 1);
PolicyEntity entity = policyEntityService.getByUUIDorName(policies.iterator().next().getUuid(), null);
Assert.assertTrue(entity.equals(policies.iterator().next()));
entity = policyEntityService.getByUUIDorName(null, "[null]policy1");
Assert.assertTrue(entity.equals(policies.iterator().next()));
// test update
entity.getDefinition().setName("policy2");
PolicyEntity updatedEntity = policyEntityService.update(entity);
Assert.assertTrue(updatedEntity.getDefinition().getName().equals("policy2"));
// test delete
//Assert.assertTrue(policyEntityService.deletePolicyProtoByUUID(entity.getUuid()));
policyEntityService.deletePolicyProtoByUUID(entity.getUuid());
Assert.assertTrue(policyEntityService.getAllPolicyProto().size() == 0);
}
}