blob: d1f4fba49be09c935af769cfc080e06219a16d2a [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.ambari.annotations;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Properties;
import org.apache.ambari.annotations.TransactionalLock.LockArea;
import org.apache.ambari.annotations.TransactionalLock.LockType;
import org.apache.ambari.server.configuration.Configuration;
import org.junit.Test;
import junit.framework.Assert;
/**
* Tests {@link TransactionalLock} and associated classes.
*/
public class TransactionalLockTest {
/**
* Tests that {@link LockArea} is correctly enabled/disabled.
*/
@Test
public void testLockAreaEnabled() throws Exception {
final Properties ambariProperties = new Properties();
ambariProperties.put(Configuration.SERVER_HRC_STATUS_SUMMARY_CACHE_ENABLED.getKey(), "true");
Configuration configuration = new Configuration(ambariProperties);
LockArea lockArea = LockArea.HRC_STATUS_CACHE;
lockArea.clearEnabled();
Assert.assertTrue(lockArea.isEnabled(configuration));
}
/**
* Tests that {@link LockArea} is correctly enabled/disabled.
*/
@Test
public void testLockAreaEnabledDisabled() throws Exception {
final Properties ambariProperties = new Properties();
ambariProperties.put(Configuration.SERVER_HRC_STATUS_SUMMARY_CACHE_ENABLED.getKey(), "false");
Configuration configuration = new Configuration(ambariProperties);
LockArea lockArea = LockArea.HRC_STATUS_CACHE;
lockArea.clearEnabled();
Assert.assertFalse(lockArea.isEnabled(configuration));
}
/**
* Tests that annotations are actually equal (more of a proof of the javadoc
* than anything).
*/
@Test
public void testAnnotationEquality() {
HashSet<TransactionalLock> annotations = new HashSet<>();
int annotationsFound = 0;
Method[] methods = getClass().getDeclaredMethods();
for (Method method : methods) {
TransactionalLock annotation = method.getAnnotation(TransactionalLock.class);
if (null != annotation) {
annotations.add(annotation);
annotationsFound++;
}
}
// there should be 3 discovered annotations, but only 2 in the hashset since
// they were collapsed
Assert.assertEquals(2, annotations.size());
Assert.assertEquals(3, annotationsFound);
}
@TransactionalLock(lockArea = LockArea.HRC_STATUS_CACHE, lockType = LockType.READ)
private void transactionalHRCRead() {
}
@TransactionalLock(lockArea = LockArea.HRC_STATUS_CACHE, lockType = LockType.READ)
private void transactionalHRCRead2() {
}
@TransactionalLock(lockArea = LockArea.HRC_STATUS_CACHE, lockType = LockType.WRITE)
private void transactionalHRCWrite() {
}
}