blob: 66be490e3ed595f4504195556cebc79b1fc851ff [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.nifi.registry.db;
import org.apache.nifi.registry.db.entity.BucketEntity;
import org.apache.nifi.registry.db.entity.BucketItemEntity;
import org.apache.nifi.registry.db.entity.BucketItemEntityType;
import org.apache.nifi.registry.db.entity.ExtensionBundleEntity;
import org.apache.nifi.registry.db.entity.ExtensionBundleEntityType;
import org.apache.nifi.registry.db.entity.ExtensionBundleVersionDependencyEntity;
import org.apache.nifi.registry.db.entity.ExtensionBundleVersionEntity;
import org.apache.nifi.registry.db.entity.ExtensionEntity;
import org.apache.nifi.registry.db.entity.ExtensionEntityCategory;
import org.apache.nifi.registry.db.entity.FlowEntity;
import org.apache.nifi.registry.db.entity.FlowSnapshotEntity;
import org.apache.nifi.registry.extension.filter.ExtensionBundleFilterParams;
import org.apache.nifi.registry.extension.filter.ExtensionBundleVersionFilterParams;
import org.apache.nifi.registry.service.MetadataService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class TestDatabaseMetadataService extends DatabaseBaseTest {
@Autowired
private MetadataService metadataService;
//----------------- Buckets ---------------------------------
@Test
public void testCreateAndGetBucket() {
final BucketEntity b = new BucketEntity();
b.setId("testBucketId");
b.setName("testBucketName");
b.setDescription("testBucketDesc");
b.setCreated(new Date());
metadataService.createBucket(b);
final BucketEntity createdBucket = metadataService.getBucketById(b.getId());
assertNotNull(createdBucket);
assertEquals(b.getId(), createdBucket.getId());
assertEquals(b.getName(), createdBucket.getName());
assertEquals(b.getDescription(), createdBucket.getDescription());
assertEquals(b.getCreated(), createdBucket.getCreated());
assertFalse(b.isAllowExtensionBundleRedeploy());
}
@Test
public void testGetBucketDoesNotExist() {
final BucketEntity bucket = metadataService.getBucketById("does-not-exist");
assertNull(bucket);
}
@Test
public void testGetBucketsByName() {
final List<BucketEntity> buckets = metadataService.getBucketsByName("Bucket 1");
assertNotNull(buckets);
assertEquals(1, buckets.size());
assertEquals("Bucket 1", buckets.get(0).getName());
}
@Test
public void testGetBucketsByNameNoneFound() {
final List<BucketEntity> buckets = metadataService.getBucketsByName("Bucket XYZ");
assertNotNull(buckets);
assertEquals(0, buckets.size());
}
@Test
public void testUpdateBucket() {
final BucketEntity bucket = metadataService.getBucketById("1");
assertNotNull(bucket);
assertFalse(bucket.isAllowExtensionBundleRedeploy());
final String updatedName = bucket.getName() + " UPDATED";
final String updatedDesc = bucket.getDescription() + "DESC";
bucket.setName(updatedName);
bucket.setDescription(updatedDesc);
bucket.setAllowExtensionBundleRedeploy(true);
metadataService.updateBucket(bucket);
final BucketEntity updatedBucket = metadataService.getBucketById(bucket.getId());
assertNotNull(updatedName);
assertEquals(updatedName, updatedBucket.getName());
assertEquals(updatedDesc, updatedBucket.getDescription());
assertTrue(updatedBucket.isAllowExtensionBundleRedeploy());
}
@Test
public void testDeleteBucketNoChildren() {
final BucketEntity bucket = metadataService.getBucketById("6");
assertNotNull(bucket);
metadataService.deleteBucket(bucket);
final BucketEntity deletedBucket = metadataService.getBucketById("6");
assertNull(deletedBucket);
}
@Test
public void testDeleteBucketWithChildren() {
final BucketEntity bucket = metadataService.getBucketById("1");
assertNotNull(bucket);
metadataService.deleteBucket(bucket);
final BucketEntity deletedBucket = metadataService.getBucketById("1");
assertNull(deletedBucket);
}
@Test
public void testGetBucketsForIds() {
final List<BucketEntity> buckets = metadataService.getBuckets(new HashSet<>(Arrays.asList("1", "2")));
assertNotNull(buckets);
assertEquals(2, buckets.size());
assertEquals("1", buckets.get(0).getId());
assertEquals("2", buckets.get(1).getId());
}
@Test
public void testGetAllBuckets() {
final List<BucketEntity> buckets = metadataService.getAllBuckets();
assertNotNull(buckets);
assertEquals(6, buckets.size());
}
//----------------- BucketItems ---------------------------------
@Test
public void testGetBucketItemsForBucket() {
final BucketEntity bucket = metadataService.getBucketById("1");
assertNotNull(bucket);
final List<BucketItemEntity> items = metadataService.getBucketItems(bucket.getId());
assertNotNull(items);
assertEquals(2, items.size());
items.stream().forEach(i -> assertNotNull(i.getBucketName()));
}
@Test
public void testGetBucketItemsForBuckets() {
final List<BucketItemEntity> items = metadataService.getBucketItems(new HashSet<>(Arrays.asList("1", "2")));
assertNotNull(items);
assertEquals(3, items.size());
items.stream().forEach(i -> assertNotNull(i.getBucketName()));
}
@Test
public void testGetItemsWithCounts() {
final List<BucketItemEntity> items = metadataService.getBucketItems(new HashSet<>(Arrays.asList("1", "2")));
assertNotNull(items);
// 3 items across all buckets
assertEquals(3, items.size());
final BucketItemEntity item1 = items.stream().filter(i -> i.getId().equals("1")).findFirst().orElse(null);
assertNotNull(item1);
assertEquals(BucketItemEntityType.FLOW, item1.getType());
final FlowEntity flowEntity = (FlowEntity) item1;
assertEquals(3, flowEntity.getSnapshotCount());
items.stream().forEach(i -> assertNotNull(i.getBucketName()));
}
@Test
public void testGetItemsWithCountsFilteredByBuckets() {
final List<BucketItemEntity> items = metadataService.getBucketItems(Collections.singleton("1"));
assertNotNull(items);
// only 2 items in bucket 1
assertEquals(2, items.size());
final BucketItemEntity item1 = items.stream().filter(i -> i.getId().equals("1")).findFirst().orElse(null);
assertNotNull(item1);
assertEquals(BucketItemEntityType.FLOW, item1.getType());
final FlowEntity flowEntity = (FlowEntity) item1;
assertEquals(3, flowEntity.getSnapshotCount());
items.stream().forEach(i -> assertNotNull(i.getBucketName()));
}
//----------------- Flows ---------------------------------
@Test
public void testGetFlowByIdWhenExists() {
final FlowEntity flow = metadataService.getFlowById("1");
assertNotNull(flow);
assertEquals("1", flow.getId());
assertEquals("1", flow.getBucketId());
}
@Test
public void testGetFlowByIdWhenDoesNotExist() {
final FlowEntity flow = metadataService.getFlowById("does-not-exist");
assertNull(flow);
}
@Test
public void testCreateFlow() {
final String bucketId = "1";
final FlowEntity flow = new FlowEntity();
flow.setId(UUID.randomUUID().toString());
flow.setBucketId(bucketId);
flow.setName("Test Flow 1");
flow.setDescription("Description for Test Flow 1");
flow.setCreated(new Date());
flow.setModified(new Date());
flow.setType(BucketItemEntityType.FLOW);
metadataService.createFlow(flow);
final FlowEntity createdFlow = metadataService.getFlowById(flow.getId());
assertNotNull(flow);
assertEquals(flow.getId(), createdFlow.getId());
assertEquals(flow.getBucketId(), createdFlow.getBucketId());
assertEquals(flow.getName(), createdFlow.getName());
assertEquals(flow.getDescription(), createdFlow.getDescription());
assertEquals(flow.getCreated(), createdFlow.getCreated());
assertEquals(flow.getModified(), createdFlow.getModified());
assertEquals(flow.getType(), createdFlow.getType());
}
@Test
public void testGetFlowByIdWithSnapshotCount() {
final FlowEntity flowEntity = metadataService.getFlowByIdWithSnapshotCounts("1");
assertNotNull(flowEntity);
assertEquals(3, flowEntity.getSnapshotCount());
}
@Test
public void testGetFlowsByBucket() {
final BucketEntity bucketEntity = metadataService.getBucketById("1");
final List<FlowEntity> flows = metadataService.getFlowsByBucket(bucketEntity.getId());
assertEquals(2, flows.size());
final FlowEntity flowEntity = flows.stream().filter(f -> f.getId().equals("1")).findFirst().orElse(null);
assertNotNull(flowEntity);
assertEquals(3, flowEntity.getSnapshotCount());
}
@Test
public void testGetFlowsByName() {
final List<FlowEntity> flows = metadataService.getFlowsByName("Flow 1");
assertNotNull(flows);
assertEquals(2, flows.size());
assertEquals("Flow 1", flows.get(0).getName());
assertEquals("Flow 1", flows.get(1).getName());
}
@Test
public void testGetFlowsByNameByBucket() {
final List<FlowEntity> flows = metadataService.getFlowsByName("2","Flow 1");
assertNotNull(flows);
assertEquals(1, flows.size());
assertEquals("Flow 1", flows.get(0).getName());
assertEquals("2", flows.get(0).getBucketId());
}
@Test
public void testUpdateFlow() {
final FlowEntity flow = metadataService.getFlowById("1");
assertNotNull(flow);
final Date originalModified = flow.getModified();
flow.setName(flow.getName() + " UPDATED");
flow.setDescription(flow.getDescription() + " UPDATED");
metadataService.updateFlow(flow);
final FlowEntity updatedFlow = metadataService.getFlowById( "1");
assertNotNull(flow);
assertEquals(flow.getName(), updatedFlow.getName());
assertEquals(flow.getDescription(), updatedFlow.getDescription());
assertEquals(flow.getModified().getTime(), updatedFlow.getModified().getTime());
assertTrue(updatedFlow.getModified().getTime() > originalModified.getTime());
}
@Test
public void testDeleteFlowWithSnapshots() {
final FlowEntity flow = metadataService.getFlowById( "1");
assertNotNull(flow);
metadataService.deleteFlow(flow);
final FlowEntity deletedFlow = metadataService.getFlowById("1");
assertNull(deletedFlow);
}
//----------------- FlowSnapshots ---------------------------------
@Test
public void testGetFlowSnapshot() {
final FlowSnapshotEntity entity = metadataService.getFlowSnapshot( "1", 1);
assertNotNull(entity);
assertEquals("1", entity.getFlowId());
assertEquals(1, entity.getVersion().intValue());
}
@Test
public void testGetFlowSnapshotDoesNotExist() {
final FlowSnapshotEntity entity = metadataService.getFlowSnapshot( "DOES-NOT-EXIST", 1);
assertNull(entity);
}
@Test
public void testCreateFlowSnapshot() {
final FlowSnapshotEntity flowSnapshot = new FlowSnapshotEntity();
flowSnapshot.setFlowId("1");
flowSnapshot.setVersion(4);
flowSnapshot.setCreated(new Date());
flowSnapshot.setCreatedBy("test-user");
flowSnapshot.setComments("Comments");
metadataService.createFlowSnapshot(flowSnapshot);
final FlowSnapshotEntity createdFlowSnapshot = metadataService.getFlowSnapshot(flowSnapshot.getFlowId(), flowSnapshot.getVersion());
assertNotNull(createdFlowSnapshot);
assertEquals(flowSnapshot.getFlowId(), createdFlowSnapshot.getFlowId());
assertEquals(flowSnapshot.getVersion(), createdFlowSnapshot.getVersion());
assertEquals(flowSnapshot.getComments(), createdFlowSnapshot.getComments());
assertEquals(flowSnapshot.getCreated(), createdFlowSnapshot.getCreated());
assertEquals(flowSnapshot.getCreatedBy(), createdFlowSnapshot.getCreatedBy());
}
@Test
public void testGetLatestSnapshot() {
final FlowSnapshotEntity latest = metadataService.getLatestSnapshot("1");
assertNotNull(latest);
assertEquals("1", latest.getFlowId());
assertEquals(3, latest.getVersion().intValue());
}
@Test
public void testGetLatestSnapshotDoesNotExist() {
final FlowSnapshotEntity latest = metadataService.getLatestSnapshot("DOES-NOT-EXIST");
assertNull(latest);
}
@Test
public void testGetFlowSnapshots() {
final List<FlowSnapshotEntity> flowSnapshots = metadataService.getSnapshots( "1");
assertNotNull(flowSnapshots);
assertEquals(3, flowSnapshots.size());
}
@Test
public void testGetFlowSnapshotsNoneFound() {
final List<FlowSnapshotEntity> flowSnapshots = metadataService.getSnapshots( "2");
assertNotNull(flowSnapshots);
assertEquals(0, flowSnapshots.size());
}
@Test
public void testDeleteFlowSnapshot() {
final FlowSnapshotEntity entity = metadataService.getFlowSnapshot( "1", 1);
assertNotNull(entity);
metadataService.deleteFlowSnapshot(entity);
final FlowSnapshotEntity deletedEntity = metadataService.getFlowSnapshot( "1", 1);
assertNull(deletedEntity);
}
//----------------- Extension Bundles ---------------------------------
@Test
public void testGetExtensionBundleById() {
final ExtensionBundleEntity entity = metadataService.getExtensionBundle("eb1");
assertNotNull(entity);
assertEquals("eb1", entity.getId());
assertEquals("nifi-example-processors-nar", entity.getName());
assertEquals("Example processors bundle", entity.getDescription());
assertNotNull(entity.getCreated());
assertNotNull(entity.getModified());
assertEquals(BucketItemEntityType.EXTENSION_BUNDLE, entity.getType());
assertEquals("3", entity.getBucketId());
assertEquals(ExtensionBundleEntityType.NIFI_NAR, entity.getBundleType());
assertEquals("org.apache.nifi", entity.getGroupId());
assertEquals("nifi-example-processors-nar", entity.getArtifactId());
}
@Test
public void testGetExtensionBundleDoesNotExist() {
final ExtensionBundleEntity entity = metadataService.getExtensionBundle("does-not-exist");
assertNull(entity);
}
@Test
public void testGetExtensionBundleByGroupArtifact() {
final String bucketId = "3";
final String group = "org.apache.nifi";
final String artifact = "nifi-example-service-api-nar";
final ExtensionBundleEntity entity = metadataService.getExtensionBundle(bucketId, group, artifact);
assertNotNull(entity);
assertEquals(bucketId, entity.getBucketId());
assertEquals(group, entity.getGroupId());
assertEquals(artifact, entity.getArtifactId());
}
@Test
public void testGetExtensionBundleByGroupArtifactDoesNotExist() {
final String bucketId = "3";
final String group = "org.apache.nifi";
final String artifact = "does-not-exist";
final ExtensionBundleEntity entity = metadataService.getExtensionBundle(bucketId, group, artifact);
assertNull(entity);
}
@Test
public void testGetExtensionBundlesWithEmptyFilterParams() {
final Set<String> bucketIds = new HashSet<>();
bucketIds.add("1");
bucketIds.add("2");
bucketIds.add("3");
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundles(bucketIds, ExtensionBundleFilterParams.empty());
assertNotNull(bundles);
assertEquals(3, bundles.size());
bundles.forEach(b -> {
assertTrue(b.getVersionCount() > 0);
assertNotNull(b.getBucketName());
});
}
@Test
public void testGetExtensionBundlesWithFilterParams() {
final Set<String> bucketIds = new HashSet<>();
bucketIds.add("1");
bucketIds.add("2");
bucketIds.add("3");
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundles(bucketIds,
ExtensionBundleFilterParams.empty());
assertNotNull(bundles);
assertEquals(3, bundles.size());
final List<ExtensionBundleEntity> bundles2 = metadataService.getExtensionBundles(bucketIds,
ExtensionBundleFilterParams.of("org.apache.nifi", null));
assertNotNull(bundles2);
assertEquals(2, bundles2.size());
final List<ExtensionBundleEntity> bundles3 = metadataService.getExtensionBundles(bucketIds,
ExtensionBundleFilterParams.of("org.apache.%", null));
assertNotNull(bundles3);
assertEquals(2, bundles3.size());
final List<ExtensionBundleEntity> bundles4 = metadataService.getExtensionBundles(bucketIds,
ExtensionBundleFilterParams.of("org.apache.nifi", "nifi-example-processors-nar"));
assertNotNull(bundles4);
assertEquals(1, bundles4.size());
final List<ExtensionBundleEntity> bundles5 = metadataService.getExtensionBundles(bucketIds,
ExtensionBundleFilterParams.of("org.apache.nifi", "nifi-example-processors-%"));
assertNotNull(bundles5);
assertEquals(1, bundles5.size());
final List<ExtensionBundleEntity> bundles6 = metadataService.getExtensionBundles(bucketIds,
ExtensionBundleFilterParams.of(null, "nifi-example-processors-%"));
assertNotNull(bundles6);
assertEquals(1, bundles6.size());
}
@Test
public void testGetExtensionBundlesByBucket() {
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundlesByBucket("3");
assertNotNull(bundles);
assertEquals(3, bundles.size());
final List<ExtensionBundleEntity> bundles2 = metadataService.getExtensionBundlesByBucket("6");
assertNotNull(bundles2);
assertEquals(0, bundles2.size());
}
@Test
public void testGetExtensionBundlesByBucketAndGroup() {
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundlesByBucketAndGroup("3", "org.apache.nifi");
assertNotNull(bundles);
assertEquals(2, bundles.size());
final List<ExtensionBundleEntity> bundles2 = metadataService.getExtensionBundlesByBucketAndGroup("3", "does-not-exist");
assertNotNull(bundles2);
assertEquals(0, bundles2.size());
}
@Test
public void testCreateExtensionBundle() {
final ExtensionBundleEntity entity = new ExtensionBundleEntity();
entity.setId(UUID.randomUUID().toString());
entity.setBucketId("3");
entity.setName("nifi-foo-nar");
entity.setDescription("This is foo nar");
entity.setCreated(new Date());
entity.setModified(new Date());
entity.setGroupId("org.apache.nifi");
entity.setArtifactId("nifi-foo-nar");
entity.setBundleType(ExtensionBundleEntityType.NIFI_NAR);
final ExtensionBundleEntity createdEntity = metadataService.createExtensionBundle(entity);
assertNotNull(createdEntity);
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundlesByBucket("3");
assertNotNull(bundles);
assertEquals(4, bundles.size());
}
@Test
public void testDeleteExtensionBundle() {
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundlesByBucket("3");
assertNotNull(bundles);
assertEquals(3, bundles.size());
final ExtensionBundleEntity existingBundle = bundles.get(0);
metadataService.deleteExtensionBundle(existingBundle);
final ExtensionBundleEntity deletedBundle = metadataService.getExtensionBundle(existingBundle.getId());
assertNull(deletedBundle);
final List<ExtensionBundleEntity> bundlesAfterDelete = metadataService.getExtensionBundlesByBucket("3");
assertNotNull(bundlesAfterDelete);
assertEquals(2, bundlesAfterDelete.size());
}
@Test
public void testDeleteBucketWithExtensionBundles() {
final List<ExtensionBundleEntity> bundles = metadataService.getExtensionBundlesByBucket("3");
assertNotNull(bundles);
assertEquals(3, bundles.size());
final BucketEntity bucket = metadataService.getBucketById("3");
assertNotNull(bucket);
metadataService.deleteBucket(bucket);
final List<ExtensionBundleEntity> bundlesAfterDelete = metadataService.getExtensionBundlesByBucket("3");
assertNotNull(bundlesAfterDelete);
assertEquals(0, bundlesAfterDelete.size());
}
//----------------- Extension Bundle Versions ---------------------------------
@Test
public void testCreateExtensionBundleVersion() {
final ExtensionBundleVersionEntity bundleVersion = new ExtensionBundleVersionEntity();
bundleVersion.setId(UUID.randomUUID().toString());
bundleVersion.setExtensionBundleId("eb1");
bundleVersion.setVersion("1.1.0");
bundleVersion.setCreated(new Date());
bundleVersion.setCreatedBy("user2");
bundleVersion.setDescription("This is v1.1.0");
bundleVersion.setSha256Hex("123456789");
bundleVersion.setSha256Supplied(false);
bundleVersion.setContentSize(2048);
metadataService.createExtensionBundleVersion(bundleVersion);
final ExtensionBundleVersionEntity createdBundleVersion = metadataService.getExtensionBundleVersion("eb1", "1.1.0");
assertNotNull(createdBundleVersion);
assertEquals(bundleVersion.getId(), createdBundleVersion.getId());
assertFalse(bundleVersion.getSha256Supplied());
}
@Test
public void testGetExtensionBundleVersionsWithEmptyBucketIdsAndEmptyFilterParams() {
final List<ExtensionBundleVersionEntity> versionEntities = metadataService.getExtensionBundleVersions(
Collections.emptySet(), ExtensionBundleVersionFilterParams.empty());
assertEquals(0, versionEntities.size());
}
@Test
public void testGetExtensionBundleVersionsWithEmptyFilterParams() {
final Set<String> bucketIds = new HashSet<>();
bucketIds.add("1");
bucketIds.add("2");
bucketIds.add("3");
final List<ExtensionBundleVersionEntity> versionEntities = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.empty());
assertEquals(3, versionEntities.size());
}
@Test
public void testGetExtensionBundleVersionsWithFilterParams() {
final Set<String> bucketIds = new HashSet<>();
bucketIds.add("1");
bucketIds.add("2");
bucketIds.add("3");
final List<ExtensionBundleVersionEntity> versionEntities = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.nifi", null, null));
assertEquals(2, versionEntities.size());
final List<ExtensionBundleVersionEntity> versionEntities2 = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.%", null, null));
assertEquals(2, versionEntities2.size());
final List<ExtensionBundleVersionEntity> versionEntities3 = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.nifi", "nifi-example-processors-nar", null));
assertEquals(1, versionEntities3.size());
final List<ExtensionBundleVersionEntity> versionEntities4 = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.nifi", "nifi-example-processors-%", null));
assertEquals(1, versionEntities4.size());
final List<ExtensionBundleVersionEntity> versionEntities5 = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.nifi", "nifi-example-processors-nar", "1.0.0"));
assertEquals(1, versionEntities5.size());
final List<ExtensionBundleVersionEntity> versionEntities6 = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.nifi", "nifi-example-processors-nar", "1.0.%"));
assertEquals(1, versionEntities6.size());
final List<ExtensionBundleVersionEntity> versionEntities7 = metadataService.getExtensionBundleVersions(
bucketIds, ExtensionBundleVersionFilterParams.of("org.apache.nifi", "nifi-example-processors-nar", "NOT-FOUND"));
assertEquals(0, versionEntities7.size());
}
@Test
public void testGetExtensionBundleVersionByBundleIdAndVersion() {
final ExtensionBundleVersionEntity bundleVersion = metadataService.getExtensionBundleVersion("eb1", "1.0.0");
assertNotNull(bundleVersion);
assertEquals("eb1-v1", bundleVersion.getId());
assertEquals("eb1", bundleVersion.getExtensionBundleId());
assertEquals("1.0.0", bundleVersion.getVersion());
assertNotNull(bundleVersion.getCreated());
assertEquals("user1", bundleVersion.getCreatedBy());
assertEquals("First version of eb1", bundleVersion.getDescription());
assertTrue(bundleVersion.getSha256Supplied());
assertEquals(1024, bundleVersion.getContentSize());
}
@Test
public void testGetExtensionBundleVersionByBundleIdAndVersionDoesNotExist() {
final ExtensionBundleVersionEntity bundleVersion = metadataService.getExtensionBundleVersion("does-not-exist", "1.0.0");
assertNull(bundleVersion);
}
@Test
public void testGetExtensionBundleVersionByBucketGroupArtifactVersion() {
final String bucketId = "3";
final String groupId = "org.apache.nifi";
final String artifactId = "nifi-example-processors-nar";
final String version = "1.0.0";
final ExtensionBundleVersionEntity bundleVersion = metadataService.getExtensionBundleVersion(bucketId, groupId, artifactId, version);
assertNotNull(bundleVersion);
assertEquals("eb1-v1", bundleVersion.getId());
assertTrue(bundleVersion.getSha256Supplied());
}
@Test
public void testGetExtensionBundleVersionByBucketGroupArtifactVersionWhenDoesNotExist() {
final String bucketId = "3";
final String groupId = "org.apache.nifi";
final String artifactId = "nifi-example-processors-nar";
final String version = "FOO";
final ExtensionBundleVersionEntity bundleVersion = metadataService.getExtensionBundleVersion(bucketId, groupId, artifactId, version);
assertNull(bundleVersion);
}
@Test
public void testGetExtensionBundleVersionsByBundleId() {
final List<ExtensionBundleVersionEntity> bundleVersions = metadataService.getExtensionBundleVersions("eb1");
assertNotNull(bundleVersions);
assertEquals(1, bundleVersions.size());
final ExtensionBundleVersionEntity bundleVersion = bundleVersions.get(0);
assertEquals("eb1", bundleVersion.getExtensionBundleId());
}
@Test
public void testGetExtensionBundleVersionsByBundleIdWhenDoesNotExist() {
final List<ExtensionBundleVersionEntity> bundleVersions = metadataService.getExtensionBundleVersions("does-not-exist");
assertNotNull(bundleVersions);
assertEquals(0, bundleVersions.size());
}
@Test
public void testGetExtensionBundleVersionsByBucketGroupArtifact() {
final String bucketId = "3";
final String groupId = "org.apache.nifi";
final String artifactId = "nifi-example-processors-nar";
final List<ExtensionBundleVersionEntity> bundleVersions = metadataService.getExtensionBundleVersions(bucketId, groupId, artifactId);
assertNotNull(bundleVersions);
assertEquals(1, bundleVersions.size());
final ExtensionBundleVersionEntity bundleVersion = bundleVersions.get(0);
assertEquals("eb1-v1", bundleVersion.getId());
}
@Test
public void testGetExtensionBundleVersionsByBucketGroupArtifactWhenDoesNotExist() {
final String bucketId = "3";
final String groupId = "org.apache.nifi";
final String artifactId = "does-not-exist";
final List<ExtensionBundleVersionEntity> bundleVersions = metadataService.getExtensionBundleVersions(bucketId, groupId, artifactId);
assertNotNull(bundleVersions);
assertEquals(0, bundleVersions.size());
}
@Test
public void testGetExtensionBundleVersionsGlobal() {
final String groupId = "org.apache.nifi";
final String artifactId = "nifi-example-processors-nar";
final String version = "1.0.0";
final List<ExtensionBundleVersionEntity> bundleVersions = metadataService.getExtensionBundleVersionsGlobal(groupId, artifactId, version);
assertNotNull(bundleVersions);
assertEquals(1, bundleVersions.size());
final ExtensionBundleVersionEntity bundleVersion = bundleVersions.get(0);
assertEquals("eb1-v1", bundleVersion.getId());
}
@Test
public void testDeleteExtensionBundleVersion() {
final ExtensionBundleVersionEntity bundleVersion = metadataService.getExtensionBundleVersion("eb1", "1.0.0");
assertNotNull(bundleVersion);
metadataService.deleteExtensionBundleVersion(bundleVersion);
final ExtensionBundleVersionEntity deletedBundleVersion = metadataService.getExtensionBundleVersion("eb1", "1.0.0");
assertNull(deletedBundleVersion);
}
// ---------- Extension Bundle Version Dependencies ------------
@Test
public void testCreateExtensionBundleVersionDependency() {
final ExtensionBundleVersionEntity versionEntity = metadataService.getExtensionBundleVersion("eb1", "1.0.0");
assertNotNull(versionEntity);
final List<ExtensionBundleVersionDependencyEntity> dependencies = metadataService.getDependenciesForBundleVersion(versionEntity.getId());
assertNotNull(dependencies);
assertEquals(1, dependencies.size());
final ExtensionBundleVersionDependencyEntity dependencyEntity = new ExtensionBundleVersionDependencyEntity();
dependencyEntity.setId(UUID.randomUUID().toString());
dependencyEntity.setExtensionBundleVersionId(versionEntity.getId());
dependencyEntity.setGroupId("com.foo");
dependencyEntity.setArtifactId("foo-nar");
dependencyEntity.setVersion("1.1.1");
metadataService.createDependency(dependencyEntity);
final List<ExtensionBundleVersionDependencyEntity> dependencies2 = metadataService.getDependenciesForBundleVersion(versionEntity.getId());
assertNotNull(dependencies2);
assertEquals(2, dependencies2.size());
}
@Test
public void testGetExtensionBundleVersionDependencies() {
final List<ExtensionBundleVersionDependencyEntity> dependencies = metadataService.getDependenciesForBundleVersion("eb1-v1");
assertNotNull(dependencies);
assertEquals(1, dependencies.size());
final ExtensionBundleVersionDependencyEntity dependency = dependencies.get(0);
assertEquals("eb1-v1-dep1", dependency.getId());
assertEquals("eb1-v1", dependency.getExtensionBundleVersionId());
assertEquals("org.apache.nifi", dependency.getGroupId());
assertEquals("nifi-example-service-api-nar", dependency.getArtifactId());
assertEquals("2.0.0", dependency.getVersion());
}
@Test
public void testGetExtensionBundleVersionDependenciesWhenNoneExist() {
final List<ExtensionBundleVersionDependencyEntity> dependencies = metadataService.getDependenciesForBundleVersion("DOES-NOT-EXIST");
assertNotNull(dependencies);
assertEquals(0, dependencies.size());
}
//----------------- Extensions ---------------------------------
@Test
public void testCreateExtension() {
final ExtensionEntity extension = new ExtensionEntity();
extension.setId("4");
extension.setExtensionBundleVersionId("eb1-v1");
extension.setType("com.example.FooBarProcessor");
extension.setTypeDescription("This the FoorBarProcessor");
extension.setCategory(ExtensionEntityCategory.PROCESSOR);
extension.setRestricted(false);
extension.setTags("tag1, tag2");
metadataService.createExtension(extension);
final ExtensionEntity retrievedExtension = metadataService.getExtensionById(extension.getId());
assertEquals(extension.getId(), retrievedExtension.getId());
assertEquals(extension.getExtensionBundleVersionId(), retrievedExtension.getExtensionBundleVersionId());
assertEquals(extension.getType(), retrievedExtension.getType());
assertEquals(extension.getTypeDescription(), retrievedExtension.getTypeDescription());
assertEquals(extension.getCategory(), retrievedExtension.getCategory());
assertEquals(extension.isRestricted(), retrievedExtension.isRestricted());
assertEquals(extension.getTags(), retrievedExtension.getTags());
final List<ExtensionEntity> tag1Extensions = metadataService.getExtensionsByTag("tag1");
assertNotNull(tag1Extensions);
assertEquals(1, tag1Extensions.size());
assertEquals(extension.getId(), tag1Extensions.get(0).getId());
final List<ExtensionEntity> tag2Extensions = metadataService.getExtensionsByTag("tag2");
assertNotNull(tag2Extensions);
assertEquals(1, tag2Extensions.size());
assertEquals(extension.getId(), tag2Extensions.get(0).getId());
}
@Test
public void testGetExtensionById() {
final ExtensionEntity extension = metadataService.getExtensionById("e1");
assertNotNull(extension);
assertEquals("e1", extension.getId());
assertEquals("org.apache.nifi.ExampleProcessor", extension.getType());
}
@Test
public void testGetExtensionByIdDoesNotExist() {
final ExtensionEntity extension = metadataService.getExtensionById("does-not-exist");
assertNull(extension);
}
@Test
public void testGetAllExtensions() {
final List<ExtensionEntity> extensions = metadataService.getAllExtensions();
assertNotNull(extensions);
assertEquals(3, extensions.size());
}
@Test
public void testGetExtensionsByBundleVersionId() {
final List<ExtensionEntity> extensions = metadataService.getExtensionsByBundleVersionId("eb1-v1");
assertNotNull(extensions);
assertEquals(2, extensions.size());
}
@Test
public void testGetExtensionsByBundleVersionIdDoesNotExist() {
final List<ExtensionEntity> extensions = metadataService.getExtensionsByBundleVersionId("does-not-exist");
assertNotNull(extensions);
assertEquals(0, extensions.size());
}
@Test
public void testGetExtensionsByBundleCoordinate() {
final String bucketId = "3";
final String groupId = "org.apache.nifi";
final String artifactId = "nifi-example-processors-nar";
final String version = "1.0.0";
final List<ExtensionEntity> extensions = metadataService.getExtensionsByBundleCoordinate(bucketId, groupId, artifactId, version);
assertNotNull(extensions);
assertEquals(2, extensions.size());
}
@Test
public void testGetExtensionsByBundleCoordinateDoesNotExist() {
final String bucketId = "3";
final String groupId = "org.apache.nifi";
final String artifactId = "does-not-exist";
final String version = "1.0.0";
final List<ExtensionEntity> extensions = metadataService.getExtensionsByBundleCoordinate(bucketId, groupId, artifactId, version);
assertNotNull(extensions);
assertEquals(0, extensions.size());
}
@Test
public void testGetExtensionsByCategory() {
final List<ExtensionEntity> services = metadataService.getExtensionsByCategory(ExtensionEntityCategory.CONTROLLER_SERVICE);
assertNotNull(services);
assertEquals(1, services.size());
final List<ExtensionEntity> processors = metadataService.getExtensionsByCategory(ExtensionEntityCategory.PROCESSOR);
assertNotNull(processors);
assertEquals(2, processors.size());
}
@Test
public void testGetExtensionTags() {
final Set<String> tags = metadataService.getAllExtensionTags();
assertNotNull(tags);
assertEquals(4, tags.size());
}
@Test
public void testDeleteExtension() {
final ExtensionEntity extension = metadataService.getExtensionById("e1");
assertNotNull(extension);
metadataService.deleteExtension(extension);
final ExtensionEntity deletedExtension = metadataService.getExtensionById("e1");
assertNull(deletedExtension);
}
}