bejancsaba commented on code in PR #6146:
URL: https://github.com/apache/nifi/pull/6146#discussion_r904144871
##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/DocGeneratorTest.java:
##########
@@ -19,100 +19,87 @@
import org.apache.commons.io.FileUtils;
import org.apache.nifi.bundle.Bundle;
import org.apache.nifi.bundle.BundleCoordinate;
-import org.apache.nifi.nar.ExtensionDiscoveringManager;
+import org.apache.nifi.bundle.BundleDetails;
+import org.apache.nifi.documentation.example.ProcessorWithLogger;
+import org.apache.nifi.nar.ExtensionDefinition;
+import org.apache.nifi.nar.ExtensionManager;
import org.apache.nifi.nar.ExtensionMapping;
-import org.apache.nifi.nar.NarClassLoadersHolder;
-import org.apache.nifi.nar.NarUnpacker;
-import org.apache.nifi.nar.StandardExtensionDiscoveringManager;
-import org.apache.nifi.nar.SystemBundle;
+import org.apache.nifi.processor.Processor;
import org.apache.nifi.util.NiFiProperties;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.io.TempDir;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
-import java.io.BufferedInputStream;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Properties;
import java.util.Set;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
public class DocGeneratorTest {
+ private static final Class<ProcessorWithLogger> PROCESSOR_CLASS =
ProcessorWithLogger.class;
+
+ private static final String[] HTML_EXTENSIONS = new String[]{"html"};
+
+ private static final boolean RECURSIVE_ENABLED = true;
+
+ @Mock
+ ExtensionManager extensionManager;
@Test
- public void testProcessorLoadsNarResources() throws IOException,
ClassNotFoundException {
- TemporaryFolder temporaryFolder = new TemporaryFolder();
- temporaryFolder.create();
-
- NiFiProperties properties =
loadSpecifiedProperties("/conf/nifi.properties",
- NiFiProperties.COMPONENT_DOCS_DIRECTORY,
- temporaryFolder.getRoot().getAbsolutePath());
-
- final Bundle systemBundle = SystemBundle.create(properties);
- final ExtensionMapping mapping = NarUnpacker.unpackNars(properties,
systemBundle);
-
-
NarClassLoadersHolder.getInstance().init(properties.getFrameworkWorkingDirectory(),
properties.getExtensionsWorkingDirectory());
-
- final ExtensionDiscoveringManager extensionManager = new
StandardExtensionDiscoveringManager();
- extensionManager.discoverExtensions(systemBundle,
NarClassLoadersHolder.getInstance().getBundles());
-
- DocGenerator.generate(properties, extensionManager, mapping);
-
- final String extensionClassName =
"org.apache.nifi.processors.WriteResourceToStream";
- final BundleCoordinate coordinate =
mapping.getProcessorNames().get(extensionClassName).stream().findFirst().get();
- final String path = coordinate.getGroup() + "/" + coordinate.getId() +
"/" + coordinate.getVersion() + "/" + extensionClassName;
- File processorDirectory = new File(temporaryFolder.getRoot(), path);
- File indexHtml = new File(processorDirectory, "index.html");
- Assert.assertTrue(indexHtml + " should have been generated",
indexHtml.exists());
- String generatedHtml = FileUtils.readFileToString(indexHtml,
Charset.defaultCharset());
- Assert.assertNotNull(generatedHtml);
- Assert.assertTrue(generatedHtml.contains("This example processor loads
a resource from the nar and writes it to the FlowFile content"));
- Assert.assertTrue(generatedHtml.contains("files that were successfully
processed"));
- Assert.assertTrue(generatedHtml.contains("files that were not
successfully processed"));
- Assert.assertTrue(generatedHtml.contains("resources"));
+ void testGenerateExtensionsNotFound(@TempDir final File workingDirectory) {
+ final NiFiProperties properties = getProperties(workingDirectory);
+ final ExtensionMapping extensionMapping = new ExtensionMapping();
+
+ DocGenerator.generate(properties, extensionManager, extensionMapping);
+
+ final Collection<File> files = FileUtils.listFiles(workingDirectory,
HTML_EXTENSIONS, RECURSIVE_ENABLED);
+ assertTrue(files.isEmpty());
+ }
+
+ @Test
+ void testGenerateProcessor(@TempDir final File workingDirectory) throws
IOException {
+ final NiFiProperties properties = getProperties(workingDirectory);
+ final ExtensionMapping extensionMapping = new ExtensionMapping();
+
+ final BundleCoordinate bundleCoordinate =
BundleCoordinate.UNKNOWN_COORDINATE;
+ final BundleDetails bundleDetails = new
BundleDetails.Builder().workingDir(workingDirectory).coordinate(bundleCoordinate).build();
+ final Bundle bundle = new Bundle(bundleDetails,
getClass().getClassLoader());
+ final ExtensionDefinition definition = new
ExtensionDefinition(PROCESSOR_CLASS.getName(), bundle, Processor.class);
+ final Set<ExtensionDefinition> extensions =
Collections.singleton(definition);
+
when(extensionManager.getExtensions(eq(Processor.class))).thenReturn(extensions);
+
doReturn(PROCESSOR_CLASS).when(extensionManager).getClass(eq(definition));
+
+ final Processor processor = new ProcessorWithLogger();
+ when(extensionManager.getTempComponent(eq(PROCESSOR_CLASS.getName()),
eq(bundleCoordinate))).thenReturn(processor);
Review Comment:
As you don't really need the processor you could just simply do
Mockito.mock(ProcessorWithLogger.class) at return.
##########
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-documentation/src/test/java/org/apache/nifi/documentation/DocGeneratorTest.java:
##########
@@ -19,100 +19,87 @@
import org.apache.commons.io.FileUtils;
import org.apache.nifi.bundle.Bundle;
import org.apache.nifi.bundle.BundleCoordinate;
-import org.apache.nifi.nar.ExtensionDiscoveringManager;
+import org.apache.nifi.bundle.BundleDetails;
+import org.apache.nifi.documentation.example.ProcessorWithLogger;
+import org.apache.nifi.nar.ExtensionDefinition;
+import org.apache.nifi.nar.ExtensionManager;
import org.apache.nifi.nar.ExtensionMapping;
-import org.apache.nifi.nar.NarClassLoadersHolder;
-import org.apache.nifi.nar.NarUnpacker;
-import org.apache.nifi.nar.StandardExtensionDiscoveringManager;
-import org.apache.nifi.nar.SystemBundle;
+import org.apache.nifi.processor.Processor;
import org.apache.nifi.util.NiFiProperties;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.io.TempDir;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
-import java.io.BufferedInputStream;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Properties;
import java.util.Set;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
public class DocGeneratorTest {
+ private static final Class<ProcessorWithLogger> PROCESSOR_CLASS =
ProcessorWithLogger.class;
+
+ private static final String[] HTML_EXTENSIONS = new String[]{"html"};
+
+ private static final boolean RECURSIVE_ENABLED = true;
+
+ @Mock
+ ExtensionManager extensionManager;
@Test
- public void testProcessorLoadsNarResources() throws IOException,
ClassNotFoundException {
- TemporaryFolder temporaryFolder = new TemporaryFolder();
- temporaryFolder.create();
-
- NiFiProperties properties =
loadSpecifiedProperties("/conf/nifi.properties",
- NiFiProperties.COMPONENT_DOCS_DIRECTORY,
- temporaryFolder.getRoot().getAbsolutePath());
-
- final Bundle systemBundle = SystemBundle.create(properties);
- final ExtensionMapping mapping = NarUnpacker.unpackNars(properties,
systemBundle);
-
-
NarClassLoadersHolder.getInstance().init(properties.getFrameworkWorkingDirectory(),
properties.getExtensionsWorkingDirectory());
-
- final ExtensionDiscoveringManager extensionManager = new
StandardExtensionDiscoveringManager();
- extensionManager.discoverExtensions(systemBundle,
NarClassLoadersHolder.getInstance().getBundles());
-
- DocGenerator.generate(properties, extensionManager, mapping);
-
- final String extensionClassName =
"org.apache.nifi.processors.WriteResourceToStream";
- final BundleCoordinate coordinate =
mapping.getProcessorNames().get(extensionClassName).stream().findFirst().get();
- final String path = coordinate.getGroup() + "/" + coordinate.getId() +
"/" + coordinate.getVersion() + "/" + extensionClassName;
- File processorDirectory = new File(temporaryFolder.getRoot(), path);
- File indexHtml = new File(processorDirectory, "index.html");
- Assert.assertTrue(indexHtml + " should have been generated",
indexHtml.exists());
- String generatedHtml = FileUtils.readFileToString(indexHtml,
Charset.defaultCharset());
- Assert.assertNotNull(generatedHtml);
- Assert.assertTrue(generatedHtml.contains("This example processor loads
a resource from the nar and writes it to the FlowFile content"));
- Assert.assertTrue(generatedHtml.contains("files that were successfully
processed"));
- Assert.assertTrue(generatedHtml.contains("files that were not
successfully processed"));
- Assert.assertTrue(generatedHtml.contains("resources"));
+ void testGenerateExtensionsNotFound(@TempDir final File workingDirectory) {
+ final NiFiProperties properties = getProperties(workingDirectory);
+ final ExtensionMapping extensionMapping = new ExtensionMapping();
+
+ DocGenerator.generate(properties, extensionManager, extensionMapping);
+
+ final Collection<File> files = FileUtils.listFiles(workingDirectory,
HTML_EXTENSIONS, RECURSIVE_ENABLED);
+ assertTrue(files.isEmpty());
+ }
+
+ @Test
+ void testGenerateProcessor(@TempDir final File workingDirectory) throws
IOException {
+ final NiFiProperties properties = getProperties(workingDirectory);
+ final ExtensionMapping extensionMapping = new ExtensionMapping();
+
+ final BundleCoordinate bundleCoordinate =
BundleCoordinate.UNKNOWN_COORDINATE;
+ final BundleDetails bundleDetails = new
BundleDetails.Builder().workingDir(workingDirectory).coordinate(bundleCoordinate).build();
+ final Bundle bundle = new Bundle(bundleDetails,
getClass().getClassLoader());
+ final ExtensionDefinition definition = new
ExtensionDefinition(PROCESSOR_CLASS.getName(), bundle, Processor.class);
+ final Set<ExtensionDefinition> extensions =
Collections.singleton(definition);
+
when(extensionManager.getExtensions(eq(Processor.class))).thenReturn(extensions);
+
doReturn(PROCESSOR_CLASS).when(extensionManager).getClass(eq(definition));
+
+ final Processor processor = new ProcessorWithLogger();
+ when(extensionManager.getTempComponent(eq(PROCESSOR_CLASS.getName()),
eq(bundleCoordinate))).thenReturn(processor);
+
+ DocGenerator.generate(properties, extensionManager, extensionMapping);
+
+ final Collection<File> files = FileUtils.listFiles(workingDirectory,
HTML_EXTENSIONS, RECURSIVE_ENABLED);
+ assertFalse(files.isEmpty());
+
+ final File file = files.iterator().next();
+ final byte[] bytes = Files.readAllBytes(file.toPath());
Review Comment:
Can you use Files.readString? It is basically the same you can save a few
lines :)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]