With the fast moving pace of wdl4s & cromwell, I wanted to split this work into two phases:
P1: implement basic http import functionality in a sync manner, since that's the current interface (smaller change)
P2: move to async, which requires making much of WdlNamespace async and all it's clients cope with that (much bigger change)
P1 will let users (Geraldine) make sure this works for her use case and get some road time without waiting for the P2 (which just makes it more scalable)
I used the sttp library for http access because it will let us move between Try/Future/IO pretty easily depending on whatever the prevailing wisdom is during P2.
I chose to use a mock http server for testing because it let me assert the correct functionality in a lightweight way with specific failure modes instead of writing many centaur tests to cover all those same cases. GET on HTTP is stable, so it's different than mocking out a complex http API with behavior
non-async version of functioning code (async is phase II)
tests using local mock http server (setup/teardown in test)
logback-test.xml created to silence noisy netty debug log messages in tests
With the fast moving pace of wdl4s & cromwell, I wanted to split this work into two phases:
P1 will let users (Geraldine) make sure this works for her use case and get some road time without waiting for the P2 (which just makes it more scalable)
I used the sttp library for http access because it will let us move between Try/Future/IO pretty easily depending on whatever the prevailing wisdom is during P2.
I chose to use a mock http server for testing because it let me assert the correct functionality in a lightweight way with specific failure modes instead of writing many centaur tests to cover all those same cases. GET on HTTP is stable, so it's different than mocking out a complex http API with behavior