mirror of
https://github.com/apple/pkl.git
synced 2026-03-31 14:13:15 +02:00
Untangle external reader code (#776)
- move the following classes into package externalreader: - ExternalModuleResolver - ExternalResourceResolver - MessageTransportModuleResolver (renamed to ExternalModuleResolverImpl, made package-private) - MessageTransportResourceResolver (renamed to ExternalResourceResolverImpl, made package-private) - replace interface ExternalModuleResolver.Spec with record ExternalModuleReaderSpec - replace interface ExternalResourceResolver.Spec with record ExternalResourceReaderSpec - translate between messaging.ResourceReaderSpec and ExternalResourceReaderSpec (eliminates dependency from messaging on higher layer) - translate between messaging.ResourceResolverSpec and ExternalResourceResolverSpec (eliminates dependency from messaging on higher layer) - add ServerMessages.ExternalReader and translate between this message component and the PklEvaluatorSettings.ExternalReader API - add ServerMessages.Proxy and translate between this message component and the PklEvaluatorSettings.Proxy API - change type of CreateEvaluatorRequest.allowedModules/allowedResources from List<Pattern>? to List<String>? - removes a lot of code - should not need to create a Pattern object to send a message - deprecate method evaluatorSettings.PklEvaluatorSettings.Proxy.create() - only seems useful internally, inlined Co-authored-by: Dan Chao <dan.chao@apple.com>
This commit is contained in:
@@ -19,7 +19,6 @@ import java.net.URI
|
||||
import java.nio.file.Path
|
||||
import java.util.concurrent.ExecutorService
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.regex.Pattern
|
||||
import kotlin.io.path.createDirectories
|
||||
import kotlin.io.path.outputStream
|
||||
import kotlin.io.path.writeText
|
||||
@@ -947,8 +946,8 @@ abstract class AbstractServerTest {
|
||||
val message =
|
||||
CreateEvaluatorRequest(
|
||||
123,
|
||||
listOf(Pattern.compile(".*")),
|
||||
listOf(Pattern.compile(".*")),
|
||||
listOf(".*"),
|
||||
listOf(".*"),
|
||||
moduleReaders,
|
||||
resourceReaders,
|
||||
modulePaths,
|
||||
|
||||
@@ -20,16 +20,13 @@ import java.io.PipedOutputStream
|
||||
import java.net.URI
|
||||
import java.nio.file.Path
|
||||
import java.time.Duration
|
||||
import java.util.regex.Pattern
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.msgpack.core.MessagePack
|
||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings
|
||||
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader
|
||||
import org.pkl.core.messaging.Message
|
||||
import org.pkl.core.messaging.MessageDecoder
|
||||
import org.pkl.core.messaging.MessageEncoder
|
||||
import org.pkl.core.messaging.Messages.*
|
||||
import org.pkl.core.messaging.Messages
|
||||
import org.pkl.core.packages.Checksums
|
||||
|
||||
class ServerMessagePackCodecTest {
|
||||
@@ -52,18 +49,16 @@ class ServerMessagePackCodecTest {
|
||||
|
||||
@Test
|
||||
fun `round-trip CreateEvaluatorRequest`() {
|
||||
val resourceReader1 = ResourceReaderSpec("resourceReader1", true, true)
|
||||
val resourceReader2 = ResourceReaderSpec("resourceReader2", true, false)
|
||||
val moduleReader1 = ModuleReaderSpec("moduleReader1", true, true, true)
|
||||
val moduleReader2 = ModuleReaderSpec("moduleReader2", true, false, false)
|
||||
val resourceReader1 = Messages.ResourceReaderSpec("resourceReader1", true, true)
|
||||
val resourceReader2 = Messages.ResourceReaderSpec("resourceReader2", true, false)
|
||||
val moduleReader1 = Messages.ModuleReaderSpec("moduleReader1", true, true, true)
|
||||
val moduleReader2 = Messages.ModuleReaderSpec("moduleReader2", true, false, false)
|
||||
val externalReader = ExternalReader("external-cmd", listOf("arg1", "arg2"))
|
||||
roundtrip(
|
||||
CreateEvaluatorRequest(
|
||||
requestId = 123,
|
||||
allowedModules = listOf("pkl", "file", "https").map(Pattern::compile),
|
||||
allowedResources =
|
||||
listOf("pkl", "file", "https", "resourceReader1", "resourceReader2")
|
||||
.map(Pattern::compile),
|
||||
allowedModules = listOf("pkl", "file", "https"),
|
||||
allowedResources = listOf("pkl", "file", "https", "resourceReader1", "resourceReader2"),
|
||||
clientResourceReaders = listOf(resourceReader1, resourceReader2),
|
||||
clientModuleReaders = listOf(moduleReader1, moduleReader2),
|
||||
modulePaths = listOf(Path.of("some/path.zip"), Path.of("other/path.zip")),
|
||||
@@ -99,7 +94,7 @@ class ServerMessagePackCodecTest {
|
||||
),
|
||||
http =
|
||||
Http(
|
||||
proxy = PklEvaluatorSettings.Proxy(URI("http://foo.com:1234"), listOf("bar", "baz")),
|
||||
proxy = Proxy(URI("http://foo.com:1234"), listOf("bar", "baz")),
|
||||
caCertificates = byteArrayOf(1, 2, 3, 4),
|
||||
),
|
||||
externalModuleReaders = mapOf("external" to externalReader, "external2" to externalReader),
|
||||
|
||||
Reference in New Issue
Block a user