Вы должны иметь возможность создавать функции Pulsar через API-интерфейс Pulsar Admin так же, как и для обычного кластера Pulsar, например,
PulsarAdmin pulsarAdmin = PulsarAdmin.builder().serviceHttpUrl("http://localhost:8080").build();
FunctionConfig functionConfig = new FunctionConfig();
functionConfig.setName("exclamation");
functionConfig.setInputs(Collections.singleton("input"));
functionConfig.setClassName(ExclamationFunction.class.getName());
functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
functionConfig.setOutput("output");
functionConfig.setJar("/tmp/my-jar.jar")
pulsarAdmin.functions().createFunction(functionConfig, functionConfig.getJar());
В проекте Apache Pulsar также имеется довольно много интеграционных тестов для тестирования функций Pulsar. Существуют настоящие интеграционные тесты, основанные на докере, и есть тесты на интеграцию с одним процессом. Вот пример одиночного процесса «интеграционных» тестов, на который вы можете сослаться:
https://github.com/apache/pulsar/blob/master/pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java