/*
* Copyright 2015 herd contributors
*
* Licensed 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.finra.herd.tools.common.databridge;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.finra.herd.core.AbstractCoreTest;
import org.finra.herd.model.dto.DataBridgeBaseManifestDto;
import org.finra.herd.model.jpa.StorageEntity;
/**
* Tests the Data Bridge Controller.
*/
public class DataBridgeControllerTest extends AbstractCoreTest
{
@Test
public void testAdjustIntegerValueAllCases()
{
testAdjustIntegerValue(DataBridgeController.MIN_THREADS - 1, DataBridgeController.MIN_THREADS);
testAdjustIntegerValue(DataBridgeController.MIN_THREADS, DataBridgeController.MIN_THREADS);
testAdjustIntegerValue(DataBridgeController.MIN_THREADS + 1, DataBridgeController.MIN_THREADS + 1);
testAdjustIntegerValue(DataBridgeController.MAX_THREADS, DataBridgeController.MAX_THREADS);
testAdjustIntegerValue(DataBridgeController.MAX_THREADS + 1, DataBridgeController.MAX_THREADS);
}
/**
* When manifest specifies storage name Assert return storage name
*/
@Test
public void testGetStorageNameFromManifestAssertReturnStorageName()
{
DataBridgeController dataBridgeController = new BasicDataBridgeController();
DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto();
manifest.setStorageName("test");
String value = dataBridgeController.getStorageNameFromManifest(manifest);
assertEquals("test", value);
}
/**
* When manifest specifies null storage name Assert return StorageEntity.MANAGED_STORAGE
*/
@Test
public void testGetStorageNameFromManifestAssertReturnDefaultWhenStorageNameNull()
{
DataBridgeController dataBridgeController = new BasicDataBridgeController();
DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto();
manifest.setStorageName(null);
String value = dataBridgeController.getStorageNameFromManifest(manifest);
assertEquals(StorageEntity.MANAGED_STORAGE, value);
}
/**
* When manifest does not specify storage name Assert return StorageEntity.MANAGED_STORAGE
*/
@Test
public void testGetStorageNameFromManifestAssertReturnDefaultWhenStorageNull()
{
DataBridgeController dataBridgeController = new BasicDataBridgeController();
DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto();
String value = dataBridgeController.getStorageNameFromManifest(manifest);
assertEquals(StorageEntity.MANAGED_STORAGE, value);
}
/**
* When manifest specifies blank text storage name Assert return StorageEntity.MANAGED_STORAGE
*/
@Test
public void testGetStorageNameFromManifestAssertReturnDefaultWhenStorageNameBlank()
{
DataBridgeController dataBridgeController = new BasicDataBridgeController();
DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto();
manifest.setStorageName(BLANK_TEXT);
String value = dataBridgeController.getStorageNameFromManifest(manifest);
assertEquals(StorageEntity.MANAGED_STORAGE, value);
}
/**
* Tests the adjust integer value with a submitted test value and an expected value. The test will fail if the expected value isn't returned.
*
* @param testValue the test value to be passed into the method.
* @param expectedValue the expected value to be returned from the method.
*/
private void testAdjustIntegerValue(Integer testValue, Integer expectedValue)
{
DataBridgeController dataBridgeController = new BasicDataBridgeController();
assertEquals(expectedValue, dataBridgeController.adjustIntegerValue(testValue, DataBridgeController.MIN_THREADS, DataBridgeController.MAX_THREADS));
}
/**
* Extends the abstract DataBridgeController class so methods in the base class can be tested.
*/
class BasicDataBridgeController extends DataBridgeController
{
}
}