mikepenz/action-junit-report

Error: ❌ No test results found for JUnit Test Report — but `junit.xml` looks reasonable to me

Closed this issue · 7 comments

This tool looks great — exactly what I was looking for — thank you!

Unfortunately I’m having trouble getting it to work.

Here’s what I’m seeing:

the junit.xml written by my test runner
<?xml version='1.0' encoding='UTF-8'?>
<testsuites>
<testsuite errors="0" package="" tests="24" name="unit" time="0.000000" hostname="localhost" id="0" timestamp="2024-03-12T19:45:15" failures="2">
<properties/>
<testcase name="promptbench.platform.web.api.handlers.iteration-test/post-coll" classname="promptbench.platform.web.api.handlers.iteration-test" time="0.000000" line="24" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/api/handlers/iteration_test.clj">
</testcase>
<testcase name="promptbench.platform.web.placeholder-ui.handlers.iteration-handler-test/post-action-run" classname="promptbench.platform.web.placeholder-ui.handlers.iteration-handler-test" time="0.000000" line="20" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/placeholder_ui/handlers/iteration_handler_test.clj">
</testcase>
<testcase name="promptbench.platform.web.placeholder-ui.handlers.iteration-handler-test/post-action-clone" classname="promptbench.platform.web.placeholder-ui.handlers.iteration-handler-test" time="0.000000" line="55" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/placeholder_ui/handlers/iteration_handler_test.clj">
</testcase>
<testcase name="promptbench.models.openai-test/invoke-openai" classname="promptbench.models.openai-test" time="0.000000" line="30" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/models/openai_test.clj">
<failure message="[:fail] expected: (&lt; 24 (-&gt; response :usage :completion_tokens) 34). actual: (not (&lt; 24 11 34))" type="assertion failure: &lt;">
FAIL in promptbench.models.openai-test/invoke-openai (openai_test.clj:56)
happy paths simple case
expected: (&lt; 24 (-&gt; response :usage :completion_tokens) 34)
  actual: (not (&lt; 24 11 34))
 Test output 
 2024-03-12 19:44:49,686 [main] DEBUG promptbench.models.openai - ------------------
  PARAMS:
 {:model &quot;gpt-3.5-turbo&quot;,
  :messages
  [{:role &quot;system&quot;, :content &quot;You are Sherlock Holmes and you will be asked a question by Watson.&quot;}
   {:role &quot;user&quot;, :content &quot;The cheese is old and moldy, where is the bathroom?&quot;}],
  :max_tokens 32,
  :temperature nil}
  
 2024-03-12 19:44:49,690 [main] DEBUG promptbench.models.openai - ------------------
  OPTS:
 {:api-key &quot;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&quot;,
  :request {:throw-exceptions? false},
  :trace
  #object[promptbench.models.openai$eval45476$fn__45478$fn__45482 0x32d87fe1 &quot;promptbench.models.openai$eval45476$fn__45478$fn__45482@32d87fe1&quot;]}
  
 2024-03-12 19:44:49,699 [main] DEBUG promptbench.models.openai - ------------------
  RESPONSE:
 {:id &quot;chatcmpl-922LJE88rTz65Z0FCfRBD9nhypgqS&quot;,
  :object &quot;chat.completion&quot;,
  :created 1710272689,
  :model &quot;gpt-3.5-turbo-0125&quot;,
  :choices
  [{:index 0,
    :message {:role &quot;assistant&quot;, :content &quot;Holmes, where is the bathroom in this house?&quot;},
    :logprobs nil,
    :finish_reason &quot;stop&quot;}],
  :usage {:prompt_tokens 38, :completion_tokens 11, :total_tokens 49},
  :system_fingerprint &quot;fp_4f0b692a78&quot;}
  
 2024-03-12 19:44:49,801 [main] DEBUG promptbench.models.openai - ------------------
  RAW-RESPONSE:
 {:request-time 929,
  :request
  {:user-info nil,
   :throw-exceptions? false,
   :as :text,
   :headers
   {&quot;Authorization&quot; &quot;***;,
    &quot;Content-Type&quot; &quot;application/json&quot;,
    &quot;Accept&quot; &quot;application/json&quot;,
    &quot;accept-encoding&quot; &quot;gzip, deflate&quot;},
   :server-port nil,
   :middleware
   [#object[hato.middleware$wrap_request_timing 0x132b136f &quot;hato.middleware$wrap_request_timing@132b136f&quot;]
    #object[hato.middleware$wrap_query_params 0x7ab8ae4a &quot;hato.middleware$wrap_query_params@7ab8ae4a&quot;]
    #object[hato.middleware$wrap_basic_auth 0x7c4503c4 &quot;hato.middleware$wrap_basic_auth@7c4503c4&quot;]
    #object[hato.middleware$wrap_oauth 0x27152f47 &quot;hato.middleware$wrap_oauth@27152f47&quot;]
    #object[hato.middleware$wrap_user_info 0x3a198e4e &quot;hato.middleware$wrap_user_info@3a198e4e&quot;]
    #object[hato.middleware$wrap_url 0x6340c4cf &quot;hato.middleware$wrap_url@6340c4cf&quot;]
    #object[hato.middleware$wrap_decompression 0x374fa040 &quot;hato.middleware$wrap_decompression@374fa040&quot;]
    #object[hato.middleware$wrap_output_coercion 0x39aecef9 &quot;hato.middleware$wrap_output_coercion@39aecef9&quot;]
    #object[wkok.openai_clojure.sse$wrap_trace$fn__45320 0x34dd0bf7 &quot;wkok.openai_clojure.sse$wrap_trace$fn__45320@34dd0bf7&quot;]
    #object[hato.middleware$wrap_exceptions 0x2ab09fe9 &quot;hato.middleware$wrap_exceptions@2ab09fe9&quot;]
    #object[hato.middleware$wrap_accept 0x6037775f &quot;hato.middleware$wrap_accept@6037775f&quot;]
    #object[hato.middleware$wrap_accept_encoding 0x2fa1b4a6 &quot;hato.middleware$wrap_accept_encoding@2fa1b4a6&quot;]
    #object[hato.middleware$wrap_multipart 0x7a24cd92 &quot;hato.middleware$wrap_multipart@7a24cd92&quot;]
    #object[hato.middleware$wrap_content_type 0x54c54ae8 &quot;hato.middleware$wrap_content_type@54c54ae8&quot;]
    #object[hato.middleware$wrap_form_params 0xf1342a0 &quot;hato.middleware$wrap_form_params@f1342a0&quot;]
    #object[hato.middleware$wrap_nested_params 0x2db5c360 &quot;hato.middleware$wrap_nested_params@2db5c360&quot;]
    #object[hato.middleware$wrap_method 0x7121c319 &quot;hato.middleware$wrap_method@7121c319&quot;]],
   :url &quot;https://api.openai.com/v1/chat/completions&quot;,
   :http-request
   #object[jdk.internal.net.http.HttpRequestImpl 0x2c818efc &quot;https://api.openai.com/v1/chat/completions POST&quot;],
   :uri &quot;/v1/chat/completions&quot;,
   :server-name &quot;api.openai.com&quot;,
   :version :http-1.1,
   :query-string nil,
   :body
   &quot;{\&quot;temperature\&quot;:null,\&quot;max_tokens\&quot;:32,\&quot;messages\&quot;:[{\&quot;role\&quot;:\&quot;system\&quot;,\&quot;content\&quot;:\&quot;You are Sherlock Holmes and you will be asked a question by Watson.\&quot;},{\&quot;role\&quot;:\&quot;user\&quot;,\&quot;content\&quot;:\&quot;The cheese is old and moldy, where is the bathroom?\&quot;}],\&quot;model\&quot;:\&quot;gpt-3.5-turbo\&quot;}&quot;,
   :scheme :https,
   :request-method :post},
  :http-client
  #object[jdk.internal.net.http.HttpClientFacade 0x5183fc21 &quot;jdk.internal.net.http.HttpClientImpl@1f180e3f(16)&quot;],
  :headers
  {&quot;content-encoding&quot; &quot;gzip&quot;,
   &quot;openai-organization&quot; &quot;mypsycap-dsxiri&quot;,
   &quot;x-ratelimit-reset-requests&quot; &quot;16.153s&quot;,
   &quot;server&quot; &quot;cloudflare&quot;,
   &quot;content-type&quot; &quot;application/json&quot;,
   &quot;access-control-allow-origin&quot; &quot;*&quot;,
   &quot;alt-svc&quot; &quot;h3=\&quot;:443\&quot;; ma=86400&quot;,
   &quot;openai-version&quot; &quot;2020-10-01&quot;,
   &quot;strict-transport-security&quot; &quot;max-age=15724800; includeSubDomains&quot;,
   &quot;x-ratelimit-remaining-tokens&quot; &quot;59936&quot;,
   &quot;openai-processing-ms&quot; &quot;559&quot;,
   &quot;connection&quot; &quot;keep-alive&quot;,
   &quot;x-ratelimit-reset-tokens&quot; &quot;64ms&quot;,
   &quot;x-ratelimit-limit-requests&quot; &quot;10000&quot;,
   &quot;transfer-encoding&quot; &quot;chunked&quot;,
   &quot;set-cookie&quot;
   [&quot;__cf_bm=3f3XQ3P7uvjU_Ql5wuSu2oEagm6TOdtO3ky82VL8xDk-1710272689-1.0.1.1-rFL5VoApLzTKI29i4SNJVY6trcyLxyGgjEA2mueIHzpGevNY52srUJwaxvs1YlOzc8C_Y2vVZ_qEbDMppwzzMw; path=/; expires=Tue, 12-Mar-24 20:14:49 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot; &quot;_cfuvid=eX6wMH9CBIJnOavVzYCFpQD2Jy53ch7K6FmbK8e868o-1710272689674-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot;],
   &quot;cf-cache-status&quot; &quot;DYNAMIC&quot;,
   &quot;cf-ray&quot; &quot;863647f0dbd9084f-IAD&quot;,
   &quot;date&quot; &quot;Tue, 12 Mar 2024 19:44:49 GMT&quot;,
   &quot;x-request-id&quot; &quot;req_f0ea58aa430e70d98f59e128c0df0ec9&quot;,
   &quot;x-ratelimit-remaining-requests&quot; &quot;9998&quot;,
   &quot;openai-model&quot; &quot;gpt-3.5-turbo-0125&quot;,
   &quot;cache-control&quot; &quot;no-cache, must-revalidate&quot;,
   &quot;x-ratelimit-limit-tokens&quot; &quot;60000&quot;},
  :status 200,
  :content-type :application/json,
  :uri &quot;https://api.openai.com/v1/chat/completions&quot;,
  :content-type-params {},
  :version :http-1.1,
  :body
  &quot;{\n  \&quot;id\&quot;: \&quot;chatcmpl-922LJE88rTz65Z0FCfRBD9nhypgqS\&quot;,\n  \&quot;object\&quot;: \&quot;chat.completion\&quot;,\n  \&quot;created\&quot;: 1710272689,\n  \&quot;model\&quot;: \&quot;gpt-3.5-turbo-0125\&quot;,\n  \&quot;choices\&quot;: [\n    {\n      \&quot;index\&quot;: 0,\n      \&quot;message\&quot;: {\n        \&quot;role\&quot;: \&quot;assistant\&quot;,\n        \&quot;content\&quot;: \&quot;Holmes, where is the bathroom in this house?\&quot;\n      },\n      \&quot;logprobs\&quot;: null,\n      \&quot;finish_reason\&quot;: \&quot;stop\&quot;\n    }\n  ],\n  \&quot;usage\&quot;: {\n    \&quot;prompt_tokens\&quot;: 38,\n    \&quot;completion_tokens\&quot;: 11,\n    \&quot;total_tokens\&quot;: 49\n  },\n  \&quot;system_fingerprint\&quot;: \&quot;fp_4f0b692a78\&quot;\n}\n&quot;}
  
 2024-03-12 19:44:56,732 [main] DEBUG promptbench.models.openai - ------------------
  PARAMS:
 {:prompt &quot;The cheese is old and moldy, where is the bathroom?&quot;, :size &quot;256x256&quot;, :model &quot;dall-e-2&quot;}
  
 2024-03-12 19:44:56,737 [main] DEBUG promptbench.models.openai - ------------------
  OPTS:
 {:api-key &quot;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&quot;,
  :request {:throw-exceptions? false},
  :trace
  #object[promptbench.models.openai$eval45504$fn__45506$fn__45509 0x34487230 &quot;promptbench.models.openai$eval45504$fn__45506$fn__45509@34487230&quot;]}
  
 2024-03-12 19:44:56,750 [main] DEBUG promptbench.models.openai - ------------------
  RESPONSE:
 {:created 1710272696,
  :data
  [{:url
    &quot;https://oaidalleapiprodscus.blob.core.windows.net/private/org-J8jEGAiir8i12zCA0hlJHSeP/user-XHoiE6JnI2kUkugnQqvHHmqi/img-5lfbllkk5gPOUMJusWPB1Qex.png?st=2024-03-12T18%3A44%3A56Z&amp;se=2024-03-12T20%3A44%3A56Z&amp;sp=r&amp;sv=2021-08-06&amp;sr=b&amp;rscd=inline&amp;rsct=image/png&amp;skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&amp;sktid=a48cca56-e6da-484e-a814-9c849652bcb3&amp;skt=2024-03-12T15%3A30%3A23Z&amp;ske=2024-03-13T15%3A30%3A23Z&amp;sks=b&amp;skv=2021-08-06&amp;sig=iqGdvp5cwXDmOwQYOm9GjsgVYeph1kfWsEUtloEvJ9o%3D&quot;}]}
  
 2024-03-12 19:44:56,822 [main] DEBUG promptbench.models.openai - ------------------
  RAW-RESPONSE:
 {:request-time 6917,
  :request
  {:user-info nil,
   :throw-exceptions? false,
   :as :text,
   :headers
   {&quot;Authorization&quot; &quot;***;,
    &quot;Content-Type&quot; &quot;application/json&quot;,
    &quot;Accept&quot; &quot;application/json&quot;,
    &quot;accept-encoding&quot; &quot;gzip, deflate&quot;},
   :server-port nil,
   :middleware
   [#object[hato.middleware$wrap_request_timing 0x132b136f &quot;hato.middleware$wrap_request_timing@132b136f&quot;]
    #object[hato.middleware$wrap_query_params 0x7ab8ae4a &quot;hato.middleware$wrap_query_params@7ab8ae4a&quot;]
    #object[hato.middleware$wrap_basic_auth 0x7c4503c4 &quot;hato.middleware$wrap_basic_auth@7c4503c4&quot;]
    #object[hato.middleware$wrap_oauth 0x27152f47 &quot;hato.middleware$wrap_oauth@27152f47&quot;]
    #object[hato.middleware$wrap_user_info 0x3a198e4e &quot;hato.middleware$wrap_user_info@3a198e4e&quot;]
    #object[hato.middleware$wrap_url 0x6340c4cf &quot;hato.middleware$wrap_url@6340c4cf&quot;]
    #object[hato.middleware$wrap_decompression 0x374fa040 &quot;hato.middleware$wrap_decompression@374fa040&quot;]
    #object[hato.middleware$wrap_output_coercion 0x39aecef9 &quot;hato.middleware$wrap_output_coercion@39aecef9&quot;]
    #object[wkok.openai_clojure.sse$wrap_trace$fn__45320 0x4e392f4 &quot;wkok.openai_clojure.sse$wrap_trace$fn__45320@4e392f4&quot;]
    #object[hato.middleware$wrap_exceptions 0x2ab09fe9 &quot;hato.middleware$wrap_exceptions@2ab09fe9&quot;]
    #object[hato.middleware$wrap_accept 0x6037775f &quot;hato.middleware$wrap_accept@6037775f&quot;]
    #object[hato.middleware$wrap_accept_encoding 0x2fa1b4a6 &quot;hato.middleware$wrap_accept_encoding@2fa1b4a6&quot;]
    #object[hato.middleware$wrap_multipart 0x7a24cd92 &quot;hato.middleware$wrap_multipart@7a24cd92&quot;]
    #object[hato.middleware$wrap_content_type 0x54c54ae8 &quot;hato.middleware$wrap_content_type@54c54ae8&quot;]
    #object[hato.middleware$wrap_form_params 0xf1342a0 &quot;hato.middleware$wrap_form_params@f1342a0&quot;]
    #object[hato.middleware$wrap_nested_params 0x2db5c360 &quot;hato.middleware$wrap_nested_params@2db5c360&quot;]
    #object[hato.middleware$wrap_method 0x7121c319 &quot;hato.middleware$wrap_method@7121c319&quot;]],
   :url &quot;https://api.openai.com/v1/images/generations&quot;,
   :http-request
   #object[jdk.internal.net.http.HttpRequestImpl 0x1480117d &quot;https://api.openai.com/v1/images/generations POST&quot;],
   :uri &quot;/v1/images/generations&quot;,
   :server-name &quot;api.openai.com&quot;,
   :version :http-1.1,
   :query-string nil,
   :body
   &quot;{\&quot;prompt\&quot;:\&quot;The cheese is old and moldy, where is the bathroom?\&quot;,\&quot;model\&quot;:\&quot;dall-e-2\&quot;,\&quot;size\&quot;:\&quot;256x256\&quot;}&quot;,
   :scheme :https,
   :request-method :post},
  :http-client
  #object[jdk.internal.net.http.HttpClientFacade 0x1ca9248c &quot;jdk.internal.net.http.HttpClientImpl@c78c86c(17)&quot;],
  :headers
  {&quot;content-encoding&quot; &quot;gzip&quot;,
   &quot;openai-organization&quot; &quot;mypsycap-dsxiri&quot;,
   &quot;server&quot; &quot;cloudflare&quot;,
   &quot;content-type&quot; &quot;application/json&quot;,
   &quot;access-control-allow-origin&quot; &quot;*&quot;,
   &quot;alt-svc&quot; &quot;h3=\&quot;:443\&quot;; ma=86400&quot;,
   &quot;openai-version&quot; &quot;2020-10-01&quot;,
   &quot;strict-transport-security&quot; &quot;max-age=15724800; includeSubDomains&quot;,
   &quot;openai-processing-ms&quot; &quot;6825&quot;,
   &quot;connection&quot; &quot;keep-alive&quot;,
   &quot;transfer-encoding&quot; &quot;chunked&quot;,
   &quot;set-cookie&quot;
   [&quot;__cf_bm=kRzMpgcrNIAOz1nMfK.NrQHsI1a7Mu1GlLvZA.1F3co-1710272696-1.0.1.1-wGcurw8R.h4TDgJkiBV8Yh05yg339KEsTWOyeY_.079l6Aw7QKIfbavvFnQOzYuSFsL_PolMKO4oMnQ_BRskpA; path=/; expires=Tue, 12-Mar-24 20:14:56 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot; &quot;_cfuvid=1JwE3jnJdrKVO.uJn2TR_X2akbVr9pcnmtD5uoIgceo-1710272696725-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot;],
   &quot;cf-cache-status&quot; &quot;DYNAMIC&quot;,
   &quot;cf-ray&quot; &quot;863647f76f57177d-IAD&quot;,
   &quot;date&quot; &quot;Tue, 12 Mar 2024 19:44:56 GMT&quot;,
   &quot;x-request-id&quot; &quot;req_1dd54222434bc3b3da87f058d9d7ab11&quot;},
  :status 200,
  :content-type :application/json,
  :uri &quot;https://api.openai.com/v1/images/generations&quot;,
  :content-type-params {},
  :version :http-1.1,
  :body
  &quot;{\n  \&quot;created\&quot;: 1710272696,\n  \&quot;data\&quot;: [\n    {\n      \&quot;url\&quot;: \&quot;https://oaidalleapiprodscus.blob.core.windows.net/private/org-J8jEGAiir8i12zCA0hlJHSeP/user-XHoiE6JnI2kUkugnQqvHHmqi/img-5lfbllkk5gPOUMJusWPB1Qex.png?st=2024-03-12T18%3A44%3A56Z&amp;se=2024-03-12T20%3A44%3A56Z&amp;sp=r&amp;sv=2021-08-06&amp;sr=b&amp;rscd=inline&amp;rsct=image/png&amp;skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&amp;sktid=a48cca56-e6da-484e-a814-9c849652bcb3&amp;skt=2024-03-12T15%3A30%3A23Z&amp;ske=2024-03-13T15%3A30%3A23Z&amp;sks=b&amp;skv=2021-08-06&amp;sig=iqGdvp5cwXDmOwQYOm9GjsgVYeph1kfWsEUtloEvJ9o%3D\&quot;\n    }\n  ]\n}\n&quot;}
  
 2024-03-12 19:44:56,912 [main] DEBUG promptbench.models.openai - ------------------
  PARAMS:
 {:model &quot;THIS IS NOT VALID&quot;,
  :messages [{:role &quot;user&quot;, :content &quot;The cheese is old and moldy, where is the bathroom?&quot;}],
  :max_tokens 32,
  :temperature nil}
  
 2024-03-12 19:44:56,919 [main] DEBUG promptbench.models.openai - ------------------
  OPTS:
 {:api-key &quot;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&quot;,
  :request {:throw-exceptions? false},
  :trace
  #object[promptbench.models.openai$eval45476$fn__45478$fn__45482 0xe4271e5 &quot;promptbench.models.openai$eval45476$fn__45478$fn__45482@e4271e5&quot;]}
  
 2024-03-12 19:44:56,923 [main] DEBUG promptbench.models.openai - ------------------
  RESPONSE:
 {:error {:message &quot;invalid model ID&quot;, :type &quot;invalid_request_error&quot;, :param nil, :code nil}}
  
 2024-03-12 19:44:57,014 [main] DEBUG promptbench.models.openai - ------------------
  RAW-RESPONSE:
 {:request-time 76,
  :request
  {:user-info nil,
   :throw-exceptions? false,
   :as :text,
   :headers
   {&quot;Authorization&quot; &quot;***;,
    &quot;Content-Type&quot; &quot;application/json&quot;,
    &quot;Accept&quot; &quot;application/json&quot;,
    &quot;accept-encoding&quot; &quot;gzip, deflate&quot;},
   :server-port nil,
   :middleware
   [#object[hato.middleware$wrap_request_timing 0x132b136f &quot;hato.middleware$wrap_request_timing@132b136f&quot;]
    #object[hato.middleware$wrap_query_params 0x7ab8ae4a &quot;hato.middleware$wrap_query_params@7ab8ae4a&quot;]
    #object[hato.middleware$wrap_basic_auth 0x7c4503c4 &quot;hato.middleware$wrap_basic_auth@7c4503c4&quot;]
    #object[hato.middleware$wrap_oauth 0x27152f47 &quot;hato.middleware$wrap_oauth@27152f47&quot;]
    #object[hato.middleware$wrap_user_info 0x3a198e4e &quot;hato.middleware$wrap_user_info@3a198e4e&quot;]
    #object[hato.middleware$wrap_url 0x6340c4cf &quot;hato.middleware$wrap_url@6340c4cf&quot;]
    #object[hato.middleware$wrap_decompression 0x374fa040 &quot;hato.middleware$wrap_decompression@374fa040&quot;]
    #object[hato.middleware$wrap_output_coercion 0x39aecef9 &quot;hato.middleware$wrap_output_coercion@39aecef9&quot;]
    #object[wkok.openai_clojure.sse$wrap_trace$fn__45320 0x3509972a &quot;wkok.openai_clojure.sse$wrap_trace$fn__45320@3509972a&quot;]
    #object[hato.middleware$wrap_exceptions 0x2ab09fe9 &quot;hato.middleware$wrap_exceptions@2ab09fe9&quot;]
    #object[hato.middleware$wrap_accept 0x6037775f &quot;hato.middleware$wrap_accept@6037775f&quot;]
    #object[hato.middleware$wrap_accept_encoding 0x2fa1b4a6 &quot;hato.middleware$wrap_accept_encoding@2fa1b4a6&quot;]
    #object[hato.middleware$wrap_multipart 0x7a24cd92 &quot;hato.middleware$wrap_multipart@7a24cd92&quot;]
    #object[hato.middleware$wrap_content_type 0x54c54ae8 &quot;hato.middleware$wrap_content_type@54c54ae8&quot;]
    #object[hato.middleware$wrap_form_params 0xf1342a0 &quot;hato.middleware$wrap_form_params@f1342a0&quot;]
    #object[hato.middleware$wrap_nested_params 0x2db5c360 &quot;hato.middleware$wrap_nested_params@2db5c360&quot;]
    #object[hato.middleware$wrap_method 0x7121c319 &quot;hato.middleware$wrap_method@7121c319&quot;]],
   :url &quot;https://api.openai.com/v1/chat/completions&quot;,
   :http-request
   #object[jdk.internal.net.http.HttpRequestImpl 0x15d4195a &quot;https://api.openai.com/v1/chat/completions POST&quot;],
   :uri &quot;/v1/chat/completions&quot;,
   :server-name &quot;api.openai.com&quot;,
   :version :http-1.1,
   :query-string nil,
   :body
   &quot;{\&quot;temperature\&quot;:null,\&quot;max_tokens\&quot;:32,\&quot;messages\&quot;:[{\&quot;role\&quot;:\&quot;user\&quot;,\&quot;content\&quot;:\&quot;The cheese is old and moldy, where is the bathroom?\&quot;}],\&quot;model\&quot;:\&quot;THIS IS NOT VALID\&quot;}&quot;,
   :scheme :https,
   :request-method :post},
  :http-client
  #object[jdk.internal.net.http.HttpClientFacade 0x1a38fca9 &quot;jdk.internal.net.http.HttpClientImpl@5df71d52(18)&quot;],
  :headers
  {&quot;server&quot; &quot;cloudflare&quot;,
   &quot;content-type&quot; &quot;application/json; charset=utf-8&quot;,
   &quot;content-length&quot; &quot;149&quot;,
   &quot;alt-svc&quot; &quot;h3=\&quot;:443\&quot;; ma=86400&quot;,
   &quot;strict-transport-security&quot; &quot;max-age=15724800; includeSubDomains&quot;,
   &quot;connection&quot; &quot;keep-alive&quot;,
   &quot;set-cookie&quot;
   [&quot;__cf_bm=CtMur9sXpbng0s4xIjDTYuzybdSTc6kWoCVofhwUXFA-1710272696-1.0.1.1-_ME3nzDVM5RfL3maRAN1DtHKD3joZJQrvtGAmVfxTaNLAvD5dKzUQrS_UEU.gRcaQG7rjFAmU0xZV9P51maV1A; path=/; expires=Tue, 12-Mar-24 20:14:56 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot; &quot;_cfuvid=Sf5KgXA3W58QoepWt1E3NNKL_TCm2Z5CpOSXuxJagb0-1710272696905-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot;],
   &quot;cf-cache-status&quot; &quot;DYNAMIC&quot;,
   &quot;cf-ray&quot; &quot;863648235bd38224-IAD&quot;,
   &quot;date&quot; &quot;Tue, 12 Mar 2024 19:44:56 GMT&quot;,
   &quot;vary&quot; &quot;Origin&quot;,
   &quot;x-request-id&quot; &quot;req_f116190fa5777b171202400090733067&quot;},
  :status 400,
  :content-type :application/json,
  :uri &quot;https://api.openai.com/v1/chat/completions&quot;,
  :content-type-params {:charset &quot;utf-8&quot;},
  :version :http-1.1,
  :body
  &quot;{\n    \&quot;error\&quot;: {\n        \&quot;message\&quot;: \&quot;invalid model ID\&quot;,\n        \&quot;type\&quot;: \&quot;invalid_request_error\&quot;,\n        \&quot;param\&quot;: null,\n        \&quot;code\&quot;: null\n    }\n}\n&quot;}
  

</failure>
<failure message="[:fail] expected: (&gt;= 75 (-&gt; response :usage :total_tokens) 55). actual: (not (&gt;= 75 49 55))" type="assertion failure: &gt;=">
FAIL in promptbench.models.openai-test/invoke-openai (openai_test.clj:57)
happy paths simple case
expected: (&gt;= 75 (-&gt; response :usage :total_tokens) 55)
  actual: (not (&gt;= 75 49 55))
 Test output 
 2024-03-12 19:44:49,686 [main] DEBUG promptbench.models.openai - ------------------
  PARAMS:
 {:model &quot;gpt-3.5-turbo&quot;,
  :messages
  [{:role &quot;system&quot;, :content &quot;You are Sherlock Holmes and you will be asked a question by Watson.&quot;}
   {:role &quot;user&quot;, :content &quot;The cheese is old and moldy, where is the bathroom?&quot;}],
  :max_tokens 32,
  :temperature nil}
  
 2024-03-12 19:44:49,690 [main] DEBUG promptbench.models.openai - ------------------
  OPTS:
 {:api-key &quot;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&quot;,
  :request {:throw-exceptions? false},
  :trace
  #object[promptbench.models.openai$eval45476$fn__45478$fn__45482 0x32d87fe1 &quot;promptbench.models.openai$eval45476$fn__45478$fn__45482@32d87fe1&quot;]}
  
 2024-03-12 19:44:49,699 [main] DEBUG promptbench.models.openai - ------------------
  RESPONSE:
 {:id &quot;chatcmpl-922LJE88rTz65Z0FCfRBD9nhypgqS&quot;,
  :object &quot;chat.completion&quot;,
  :created 1710272689,
  :model &quot;gpt-3.5-turbo-0125&quot;,
  :choices
  [{:index 0,
    :message {:role &quot;assistant&quot;, :content &quot;Holmes, where is the bathroom in this house?&quot;},
    :logprobs nil,
    :finish_reason &quot;stop&quot;}],
  :usage {:prompt_tokens 38, :completion_tokens 11, :total_tokens 49},
  :system_fingerprint &quot;fp_4f0b692a78&quot;}
  
 2024-03-12 19:44:49,801 [main] DEBUG promptbench.models.openai - ------------------
  RAW-RESPONSE:
 {:request-time 929,
  :request
  {:user-info nil,
   :throw-exceptions? false,
   :as :text,
   :headers
   {&quot;Authorization&quot; &quot;***;,
    &quot;Content-Type&quot; &quot;application/json&quot;,
    &quot;Accept&quot; &quot;application/json&quot;,
    &quot;accept-encoding&quot; &quot;gzip, deflate&quot;},
   :server-port nil,
   :middleware
   [#object[hato.middleware$wrap_request_timing 0x132b136f &quot;hato.middleware$wrap_request_timing@132b136f&quot;]
    #object[hato.middleware$wrap_query_params 0x7ab8ae4a &quot;hato.middleware$wrap_query_params@7ab8ae4a&quot;]
    #object[hato.middleware$wrap_basic_auth 0x7c4503c4 &quot;hato.middleware$wrap_basic_auth@7c4503c4&quot;]
    #object[hato.middleware$wrap_oauth 0x27152f47 &quot;hato.middleware$wrap_oauth@27152f47&quot;]
    #object[hato.middleware$wrap_user_info 0x3a198e4e &quot;hato.middleware$wrap_user_info@3a198e4e&quot;]
    #object[hato.middleware$wrap_url 0x6340c4cf &quot;hato.middleware$wrap_url@6340c4cf&quot;]
    #object[hato.middleware$wrap_decompression 0x374fa040 &quot;hato.middleware$wrap_decompression@374fa040&quot;]
    #object[hato.middleware$wrap_output_coercion 0x39aecef9 &quot;hato.middleware$wrap_output_coercion@39aecef9&quot;]
    #object[wkok.openai_clojure.sse$wrap_trace$fn__45320 0x34dd0bf7 &quot;wkok.openai_clojure.sse$wrap_trace$fn__45320@34dd0bf7&quot;]
    #object[hato.middleware$wrap_exceptions 0x2ab09fe9 &quot;hato.middleware$wrap_exceptions@2ab09fe9&quot;]
    #object[hato.middleware$wrap_accept 0x6037775f &quot;hato.middleware$wrap_accept@6037775f&quot;]
    #object[hato.middleware$wrap_accept_encoding 0x2fa1b4a6 &quot;hato.middleware$wrap_accept_encoding@2fa1b4a6&quot;]
    #object[hato.middleware$wrap_multipart 0x7a24cd92 &quot;hato.middleware$wrap_multipart@7a24cd92&quot;]
    #object[hato.middleware$wrap_content_type 0x54c54ae8 &quot;hato.middleware$wrap_content_type@54c54ae8&quot;]
    #object[hato.middleware$wrap_form_params 0xf1342a0 &quot;hato.middleware$wrap_form_params@f1342a0&quot;]
    #object[hato.middleware$wrap_nested_params 0x2db5c360 &quot;hato.middleware$wrap_nested_params@2db5c360&quot;]
    #object[hato.middleware$wrap_method 0x7121c319 &quot;hato.middleware$wrap_method@7121c319&quot;]],
   :url &quot;https://api.openai.com/v1/chat/completions&quot;,
   :http-request
   #object[jdk.internal.net.http.HttpRequestImpl 0x2c818efc &quot;https://api.openai.com/v1/chat/completions POST&quot;],
   :uri &quot;/v1/chat/completions&quot;,
   :server-name &quot;api.openai.com&quot;,
   :version :http-1.1,
   :query-string nil,
   :body
   &quot;{\&quot;temperature\&quot;:null,\&quot;max_tokens\&quot;:32,\&quot;messages\&quot;:[{\&quot;role\&quot;:\&quot;system\&quot;,\&quot;content\&quot;:\&quot;You are Sherlock Holmes and you will be asked a question by Watson.\&quot;},{\&quot;role\&quot;:\&quot;user\&quot;,\&quot;content\&quot;:\&quot;The cheese is old and moldy, where is the bathroom?\&quot;}],\&quot;model\&quot;:\&quot;gpt-3.5-turbo\&quot;}&quot;,
   :scheme :https,
   :request-method :post},
  :http-client
  #object[jdk.internal.net.http.HttpClientFacade 0x5183fc21 &quot;jdk.internal.net.http.HttpClientImpl@1f180e3f(16)&quot;],
  :headers
  {&quot;content-encoding&quot; &quot;gzip&quot;,
   &quot;openai-organization&quot; &quot;mypsycap-dsxiri&quot;,
   &quot;x-ratelimit-reset-requests&quot; &quot;16.153s&quot;,
   &quot;server&quot; &quot;cloudflare&quot;,
   &quot;content-type&quot; &quot;application/json&quot;,
   &quot;access-control-allow-origin&quot; &quot;*&quot;,
   &quot;alt-svc&quot; &quot;h3=\&quot;:443\&quot;; ma=86400&quot;,
   &quot;openai-version&quot; &quot;2020-10-01&quot;,
   &quot;strict-transport-security&quot; &quot;max-age=15724800; includeSubDomains&quot;,
   &quot;x-ratelimit-remaining-tokens&quot; &quot;59936&quot;,
   &quot;openai-processing-ms&quot; &quot;559&quot;,
   &quot;connection&quot; &quot;keep-alive&quot;,
   &quot;x-ratelimit-reset-tokens&quot; &quot;64ms&quot;,
   &quot;x-ratelimit-limit-requests&quot; &quot;10000&quot;,
   &quot;transfer-encoding&quot; &quot;chunked&quot;,
   &quot;set-cookie&quot;
   [&quot;__cf_bm=3f3XQ3P7uvjU_Ql5wuSu2oEagm6TOdtO3ky82VL8xDk-1710272689-1.0.1.1-rFL5VoApLzTKI29i4SNJVY6trcyLxyGgjEA2mueIHzpGevNY52srUJwaxvs1YlOzc8C_Y2vVZ_qEbDMppwzzMw; path=/; expires=Tue, 12-Mar-24 20:14:49 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot; &quot;_cfuvid=eX6wMH9CBIJnOavVzYCFpQD2Jy53ch7K6FmbK8e868o-1710272689674-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot;],
   &quot;cf-cache-status&quot; &quot;DYNAMIC&quot;,
   &quot;cf-ray&quot; &quot;863647f0dbd9084f-IAD&quot;,
   &quot;date&quot; &quot;Tue, 12 Mar 2024 19:44:49 GMT&quot;,
   &quot;x-request-id&quot; &quot;req_f0ea58aa430e70d98f59e128c0df0ec9&quot;,
   &quot;x-ratelimit-remaining-requests&quot; &quot;9998&quot;,
   &quot;openai-model&quot; &quot;gpt-3.5-turbo-0125&quot;,
   &quot;cache-control&quot; &quot;no-cache, must-revalidate&quot;,
   &quot;x-ratelimit-limit-tokens&quot; &quot;60000&quot;},
  :status 200,
  :content-type :application/json,
  :uri &quot;https://api.openai.com/v1/chat/completions&quot;,
  :content-type-params {},
  :version :http-1.1,
  :body
  &quot;{\n  \&quot;id\&quot;: \&quot;chatcmpl-922LJE88rTz65Z0FCfRBD9nhypgqS\&quot;,\n  \&quot;object\&quot;: \&quot;chat.completion\&quot;,\n  \&quot;created\&quot;: 1710272689,\n  \&quot;model\&quot;: \&quot;gpt-3.5-turbo-0125\&quot;,\n  \&quot;choices\&quot;: [\n    {\n      \&quot;index\&quot;: 0,\n      \&quot;message\&quot;: {\n        \&quot;role\&quot;: \&quot;assistant\&quot;,\n        \&quot;content\&quot;: \&quot;Holmes, where is the bathroom in this house?\&quot;\n      },\n      \&quot;logprobs\&quot;: null,\n      \&quot;finish_reason\&quot;: \&quot;stop\&quot;\n    }\n  ],\n  \&quot;usage\&quot;: {\n    \&quot;prompt_tokens\&quot;: 38,\n    \&quot;completion_tokens\&quot;: 11,\n    \&quot;total_tokens\&quot;: 49\n  },\n  \&quot;system_fingerprint\&quot;: \&quot;fp_4f0b692a78\&quot;\n}\n&quot;}
  
 2024-03-12 19:44:56,732 [main] DEBUG promptbench.models.openai - ------------------
  PARAMS:
 {:prompt &quot;The cheese is old and moldy, where is the bathroom?&quot;, :size &quot;256x256&quot;, :model &quot;dall-e-2&quot;}
  
 2024-03-12 19:44:56,737 [main] DEBUG promptbench.models.openai - ------------------
  OPTS:
 {:api-key &quot;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&quot;,
  :request {:throw-exceptions? false},
  :trace
  #object[promptbench.models.openai$eval45504$fn__45506$fn__45509 0x34487230 &quot;promptbench.models.openai$eval45504$fn__45506$fn__45509@34487230&quot;]}
  
 2024-03-12 19:44:56,750 [main] DEBUG promptbench.models.openai - ------------------
  RESPONSE:
 {:created 1710272696,
  :data
  [{:url
    &quot;https://oaidalleapiprodscus.blob.core.windows.net/private/org-J8jEGAiir8i12zCA0hlJHSeP/user-XHoiE6JnI2kUkugnQqvHHmqi/img-5lfbllkk5gPOUMJusWPB1Qex.png?st=2024-03-12T18%3A44%3A56Z&amp;se=2024-03-12T20%3A44%3A56Z&amp;sp=r&amp;sv=2021-08-06&amp;sr=b&amp;rscd=inline&amp;rsct=image/png&amp;skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&amp;sktid=a48cca56-e6da-484e-a814-9c849652bcb3&amp;skt=2024-03-12T15%3A30%3A23Z&amp;ske=2024-03-13T15%3A30%3A23Z&amp;sks=b&amp;skv=2021-08-06&amp;sig=iqGdvp5cwXDmOwQYOm9GjsgVYeph1kfWsEUtloEvJ9o%3D&quot;}]}
  
 2024-03-12 19:44:56,822 [main] DEBUG promptbench.models.openai - ------------------
  RAW-RESPONSE:
 {:request-time 6917,
  :request
  {:user-info nil,
   :throw-exceptions? false,
   :as :text,
   :headers
   {&quot;Authorization&quot; &quot;***;,
    &quot;Content-Type&quot; &quot;application/json&quot;,
    &quot;Accept&quot; &quot;application/json&quot;,
    &quot;accept-encoding&quot; &quot;gzip, deflate&quot;},
   :server-port nil,
   :middleware
   [#object[hato.middleware$wrap_request_timing 0x132b136f &quot;hato.middleware$wrap_request_timing@132b136f&quot;]
    #object[hato.middleware$wrap_query_params 0x7ab8ae4a &quot;hato.middleware$wrap_query_params@7ab8ae4a&quot;]
    #object[hato.middleware$wrap_basic_auth 0x7c4503c4 &quot;hato.middleware$wrap_basic_auth@7c4503c4&quot;]
    #object[hato.middleware$wrap_oauth 0x27152f47 &quot;hato.middleware$wrap_oauth@27152f47&quot;]
    #object[hato.middleware$wrap_user_info 0x3a198e4e &quot;hato.middleware$wrap_user_info@3a198e4e&quot;]
    #object[hato.middleware$wrap_url 0x6340c4cf &quot;hato.middleware$wrap_url@6340c4cf&quot;]
    #object[hato.middleware$wrap_decompression 0x374fa040 &quot;hato.middleware$wrap_decompression@374fa040&quot;]
    #object[hato.middleware$wrap_output_coercion 0x39aecef9 &quot;hato.middleware$wrap_output_coercion@39aecef9&quot;]
    #object[wkok.openai_clojure.sse$wrap_trace$fn__45320 0x4e392f4 &quot;wkok.openai_clojure.sse$wrap_trace$fn__45320@4e392f4&quot;]
    #object[hato.middleware$wrap_exceptions 0x2ab09fe9 &quot;hato.middleware$wrap_exceptions@2ab09fe9&quot;]
    #object[hato.middleware$wrap_accept 0x6037775f &quot;hato.middleware$wrap_accept@6037775f&quot;]
    #object[hato.middleware$wrap_accept_encoding 0x2fa1b4a6 &quot;hato.middleware$wrap_accept_encoding@2fa1b4a6&quot;]
    #object[hato.middleware$wrap_multipart 0x7a24cd92 &quot;hato.middleware$wrap_multipart@7a24cd92&quot;]
    #object[hato.middleware$wrap_content_type 0x54c54ae8 &quot;hato.middleware$wrap_content_type@54c54ae8&quot;]
    #object[hato.middleware$wrap_form_params 0xf1342a0 &quot;hato.middleware$wrap_form_params@f1342a0&quot;]
    #object[hato.middleware$wrap_nested_params 0x2db5c360 &quot;hato.middleware$wrap_nested_params@2db5c360&quot;]
    #object[hato.middleware$wrap_method 0x7121c319 &quot;hato.middleware$wrap_method@7121c319&quot;]],
   :url &quot;https://api.openai.com/v1/images/generations&quot;,
   :http-request
   #object[jdk.internal.net.http.HttpRequestImpl 0x1480117d &quot;https://api.openai.com/v1/images/generations POST&quot;],
   :uri &quot;/v1/images/generations&quot;,
   :server-name &quot;api.openai.com&quot;,
   :version :http-1.1,
   :query-string nil,
   :body
   &quot;{\&quot;prompt\&quot;:\&quot;The cheese is old and moldy, where is the bathroom?\&quot;,\&quot;model\&quot;:\&quot;dall-e-2\&quot;,\&quot;size\&quot;:\&quot;256x256\&quot;}&quot;,
   :scheme :https,
   :request-method :post},
  :http-client
  #object[jdk.internal.net.http.HttpClientFacade 0x1ca9248c &quot;jdk.internal.net.http.HttpClientImpl@c78c86c(17)&quot;],
  :headers
  {&quot;content-encoding&quot; &quot;gzip&quot;,
   &quot;openai-organization&quot; &quot;mypsycap-dsxiri&quot;,
   &quot;server&quot; &quot;cloudflare&quot;,
   &quot;content-type&quot; &quot;application/json&quot;,
   &quot;access-control-allow-origin&quot; &quot;*&quot;,
   &quot;alt-svc&quot; &quot;h3=\&quot;:443\&quot;; ma=86400&quot;,
   &quot;openai-version&quot; &quot;2020-10-01&quot;,
   &quot;strict-transport-security&quot; &quot;max-age=15724800; includeSubDomains&quot;,
   &quot;openai-processing-ms&quot; &quot;6825&quot;,
   &quot;connection&quot; &quot;keep-alive&quot;,
   &quot;transfer-encoding&quot; &quot;chunked&quot;,
   &quot;set-cookie&quot;
   [&quot;__cf_bm=kRzMpgcrNIAOz1nMfK.NrQHsI1a7Mu1GlLvZA.1F3co-1710272696-1.0.1.1-wGcurw8R.h4TDgJkiBV8Yh05yg339KEsTWOyeY_.079l6Aw7QKIfbavvFnQOzYuSFsL_PolMKO4oMnQ_BRskpA; path=/; expires=Tue, 12-Mar-24 20:14:56 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot; &quot;_cfuvid=1JwE3jnJdrKVO.uJn2TR_X2akbVr9pcnmtD5uoIgceo-1710272696725-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot;],
   &quot;cf-cache-status&quot; &quot;DYNAMIC&quot;,
   &quot;cf-ray&quot; &quot;863647f76f57177d-IAD&quot;,
   &quot;date&quot; &quot;Tue, 12 Mar 2024 19:44:56 GMT&quot;,
   &quot;x-request-id&quot; &quot;req_1dd54222434bc3b3da87f058d9d7ab11&quot;},
  :status 200,
  :content-type :application/json,
  :uri &quot;https://api.openai.com/v1/images/generations&quot;,
  :content-type-params {},
  :version :http-1.1,
  :body
  &quot;{\n  \&quot;created\&quot;: 1710272696,\n  \&quot;data\&quot;: [\n    {\n      \&quot;url\&quot;: \&quot;https://oaidalleapiprodscus.blob.core.windows.net/private/org-J8jEGAiir8i12zCA0hlJHSeP/user-XHoiE6JnI2kUkugnQqvHHmqi/img-5lfbllkk5gPOUMJusWPB1Qex.png?st=2024-03-12T18%3A44%3A56Z&amp;se=2024-03-12T20%3A44%3A56Z&amp;sp=r&amp;sv=2021-08-06&amp;sr=b&amp;rscd=inline&amp;rsct=image/png&amp;skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&amp;sktid=a48cca56-e6da-484e-a814-9c849652bcb3&amp;skt=2024-03-12T15%3A30%3A23Z&amp;ske=2024-03-13T15%3A30%3A23Z&amp;sks=b&amp;skv=2021-08-06&amp;sig=iqGdvp5cwXDmOwQYOm9GjsgVYeph1kfWsEUtloEvJ9o%3D\&quot;\n    }\n  ]\n}\n&quot;}
  
 2024-03-12 19:44:56,912 [main] DEBUG promptbench.models.openai - ------------------
  PARAMS:
 {:model &quot;THIS IS NOT VALID&quot;,
  :messages [{:role &quot;user&quot;, :content &quot;The cheese is old and moldy, where is the bathroom?&quot;}],
  :max_tokens 32,
  :temperature nil}
  
 2024-03-12 19:44:56,919 [main] DEBUG promptbench.models.openai - ------------------
  OPTS:
 {:api-key &quot;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&quot;,
  :request {:throw-exceptions? false},
  :trace
  #object[promptbench.models.openai$eval45476$fn__45478$fn__45482 0xe4271e5 &quot;promptbench.models.openai$eval45476$fn__45478$fn__45482@e4271e5&quot;]}
  
 2024-03-12 19:44:56,923 [main] DEBUG promptbench.models.openai - ------------------
  RESPONSE:
 {:error {:message &quot;invalid model ID&quot;, :type &quot;invalid_request_error&quot;, :param nil, :code nil}}
  
 2024-03-12 19:44:57,014 [main] DEBUG promptbench.models.openai - ------------------
  RAW-RESPONSE:
 {:request-time 76,
  :request
  {:user-info nil,
   :throw-exceptions? false,
   :as :text,
   :headers
   {&quot;Authorization&quot; &quot;***;,
    &quot;Content-Type&quot; &quot;application/json&quot;,
    &quot;Accept&quot; &quot;application/json&quot;,
    &quot;accept-encoding&quot; &quot;gzip, deflate&quot;},
   :server-port nil,
   :middleware
   [#object[hato.middleware$wrap_request_timing 0x132b136f &quot;hato.middleware$wrap_request_timing@132b136f&quot;]
    #object[hato.middleware$wrap_query_params 0x7ab8ae4a &quot;hato.middleware$wrap_query_params@7ab8ae4a&quot;]
    #object[hato.middleware$wrap_basic_auth 0x7c4503c4 &quot;hato.middleware$wrap_basic_auth@7c4503c4&quot;]
    #object[hato.middleware$wrap_oauth 0x27152f47 &quot;hato.middleware$wrap_oauth@27152f47&quot;]
    #object[hato.middleware$wrap_user_info 0x3a198e4e &quot;hato.middleware$wrap_user_info@3a198e4e&quot;]
    #object[hato.middleware$wrap_url 0x6340c4cf &quot;hato.middleware$wrap_url@6340c4cf&quot;]
    #object[hato.middleware$wrap_decompression 0x374fa040 &quot;hato.middleware$wrap_decompression@374fa040&quot;]
    #object[hato.middleware$wrap_output_coercion 0x39aecef9 &quot;hato.middleware$wrap_output_coercion@39aecef9&quot;]
    #object[wkok.openai_clojure.sse$wrap_trace$fn__45320 0x3509972a &quot;wkok.openai_clojure.sse$wrap_trace$fn__45320@3509972a&quot;]
    #object[hato.middleware$wrap_exceptions 0x2ab09fe9 &quot;hato.middleware$wrap_exceptions@2ab09fe9&quot;]
    #object[hato.middleware$wrap_accept 0x6037775f &quot;hato.middleware$wrap_accept@6037775f&quot;]
    #object[hato.middleware$wrap_accept_encoding 0x2fa1b4a6 &quot;hato.middleware$wrap_accept_encoding@2fa1b4a6&quot;]
    #object[hato.middleware$wrap_multipart 0x7a24cd92 &quot;hato.middleware$wrap_multipart@7a24cd92&quot;]
    #object[hato.middleware$wrap_content_type 0x54c54ae8 &quot;hato.middleware$wrap_content_type@54c54ae8&quot;]
    #object[hato.middleware$wrap_form_params 0xf1342a0 &quot;hato.middleware$wrap_form_params@f1342a0&quot;]
    #object[hato.middleware$wrap_nested_params 0x2db5c360 &quot;hato.middleware$wrap_nested_params@2db5c360&quot;]
    #object[hato.middleware$wrap_method 0x7121c319 &quot;hato.middleware$wrap_method@7121c319&quot;]],
   :url &quot;https://api.openai.com/v1/chat/completions&quot;,
   :http-request
   #object[jdk.internal.net.http.HttpRequestImpl 0x15d4195a &quot;https://api.openai.com/v1/chat/completions POST&quot;],
   :uri &quot;/v1/chat/completions&quot;,
   :server-name &quot;api.openai.com&quot;,
   :version :http-1.1,
   :query-string nil,
   :body
   &quot;{\&quot;temperature\&quot;:null,\&quot;max_tokens\&quot;:32,\&quot;messages\&quot;:[{\&quot;role\&quot;:\&quot;user\&quot;,\&quot;content\&quot;:\&quot;The cheese is old and moldy, where is the bathroom?\&quot;}],\&quot;model\&quot;:\&quot;THIS IS NOT VALID\&quot;}&quot;,
   :scheme :https,
   :request-method :post},
  :http-client
  #object[jdk.internal.net.http.HttpClientFacade 0x1a38fca9 &quot;jdk.internal.net.http.HttpClientImpl@5df71d52(18)&quot;],
  :headers
  {&quot;server&quot; &quot;cloudflare&quot;,
   &quot;content-type&quot; &quot;application/json; charset=utf-8&quot;,
   &quot;content-length&quot; &quot;149&quot;,
   &quot;alt-svc&quot; &quot;h3=\&quot;:443\&quot;; ma=86400&quot;,
   &quot;strict-transport-security&quot; &quot;max-age=15724800; includeSubDomains&quot;,
   &quot;connection&quot; &quot;keep-alive&quot;,
   &quot;set-cookie&quot;
   [&quot;__cf_bm=CtMur9sXpbng0s4xIjDTYuzybdSTc6kWoCVofhwUXFA-1710272696-1.0.1.1-_ME3nzDVM5RfL3maRAN1DtHKD3joZJQrvtGAmVfxTaNLAvD5dKzUQrS_UEU.gRcaQG7rjFAmU0xZV9P51maV1A; path=/; expires=Tue, 12-Mar-24 20:14:56 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot; &quot;_cfuvid=Sf5KgXA3W58QoepWt1E3NNKL_TCm2Z5CpOSXuxJagb0-1710272696905-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None&quot;],
   &quot;cf-cache-status&quot; &quot;DYNAMIC&quot;,
   &quot;cf-ray&quot; &quot;863648235bd38224-IAD&quot;,
   &quot;date&quot; &quot;Tue, 12 Mar 2024 19:44:56 GMT&quot;,
   &quot;vary&quot; &quot;Origin&quot;,
   &quot;x-request-id&quot; &quot;req_f116190fa5777b171202400090733067&quot;},
  :status 400,
  :content-type :application/json,
  :uri &quot;https://api.openai.com/v1/chat/completions&quot;,
  :content-type-params {:charset &quot;utf-8&quot;},
  :version :http-1.1,
  :body
  &quot;{\n    \&quot;error\&quot;: {\n        \&quot;message\&quot;: \&quot;invalid model ID\&quot;,\n        \&quot;type\&quot;: \&quot;invalid_request_error\&quot;,\n        \&quot;param\&quot;: null,\n        \&quot;code\&quot;: null\n    }\n}\n&quot;}
  

</failure>
</testcase>
<testcase name="promptbench.platform.invocation-test/save!" classname="promptbench.platform.invocation-test" time="0.000000" line="138" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.invocation-test/run!" classname="promptbench.platform.invocation-test" time="0.000000" line="392" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.invocation-test/get-all!" classname="promptbench.platform.invocation-test" time="0.000000" line="524" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.invocation-test/simplify" classname="promptbench.platform.invocation-test" time="0.000000" line="295" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.invocation-test/enrich!" classname="promptbench.platform.invocation-test" time="0.000000" line="263" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.invocation-test/save-results!" classname="promptbench.platform.invocation-test" time="0.000000" line="453" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.invocation-test/render" classname="promptbench.platform.invocation-test" time="0.000000" line="28" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/invocation_test.clj">
</testcase>
<testcase name="promptbench.platform.iteration-test/create!" classname="promptbench.platform.iteration-test" time="0.000000" line="23" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/iteration_test.clj">
</testcase>
<testcase name="promptbench.platform.iteration-test/expand" classname="promptbench.platform.iteration-test" time="0.000000" line="103" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/iteration_test.clj">
</testcase>
<testcase name="promptbench.platform.iteration-test/run!" classname="promptbench.platform.iteration-test" time="0.000000" line="299" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/iteration_test.clj">
</testcase>
<testcase name="promptbench.platform.iteration-test/clone!" classname="promptbench.platform.iteration-test" time="0.000000" line="341" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/iteration_test.clj">
</testcase>
<testcase name="promptbench.platform.iteration-test/get!" classname="promptbench.platform.iteration-test" time="0.000000" line="74" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/iteration_test.clj">
</testcase>
<testcase name="promptbench.platform.web.api.handlers.asset-test/post-coll" classname="promptbench.platform.web.api.handlers.asset-test" time="0.000000" line="22" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/api/handlers/asset_test.clj">
</testcase>
<testcase name="promptbench.platform.web.api.handlers.project-test/post-coll" classname="promptbench.platform.web.api.handlers.project-test" time="0.000000" line="22" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/api/handlers/project_test.clj">
</testcase>
<testcase name="promptbench.platform.web.api.handlers.prompt-test/post-coll" classname="promptbench.platform.web.api.handlers.prompt-test" time="0.000000" line="21" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/api/handlers/prompt_test.clj">
</testcase>
<testcase name="promptbench.platform.web.api.smoke-test/smoke" classname="promptbench.platform.web.api.smoke-test" time="0.000000" line="45" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/api/smoke_test.clj">
</testcase>
<testcase name="promptbench.models.google-test/invoke-google" classname="promptbench.models.google-test" time="0.000000" line="71" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/models/google_test.clj">
</testcase>
<testcase name="promptbench.platform.web.routes-test/get-url" classname="promptbench.platform.web.routes-test" time="0.000000" line="8" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/routes_test.clj">
</testcase>
<testcase name="promptbench.platform.web.api.handlers.variable-test/post-coll" classname="promptbench.platform.web.api.handlers.variable-test" time="0.000000" line="24" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/api/handlers/variable_test.clj">
</testcase>
<testcase name="promptbench.platform.web.placeholder-ui.handlers.prompt.new-iteration-test/post" classname="promptbench.platform.web.placeholder-ui.handlers.prompt.new-iteration-test" time="0.000000" line="18" column="1" file="/home/runner/work/promptbench/promptbench/system/platform/test/clj/promptbench/platform/web/placeholder_ui/handlers/prompt/new_iteration_test.clj">
</testcase>
<system-out/>
<system-err/>
</testsuite>
</testsuites>

The config in my workflow file:

    - name: Annotate failures
      if: success() || failure()
      uses: mikepenz/action-junit-report@v4.1.0
      with:
        report_paths: junit.xml
        include_passed: true
        require_tests: true
        require_passed_tests: true

The output of the action:

##[group]Run mikepenz/action-junit-report@v4.1.0
with:
  report_paths: junit.xml
  include_passed: true
  require_tests: true
  require_passed_tests: true
  token: ***
  annotate_only: false
  check_annotations: true
  update_check: false
  check_name: JUnit Test Report
  fail_on_failure: false
  check_retries: false
  transformers: []
  job_summary: true
  detailed_summary: false
  annotate_notice: false
  follow_symlink: false
  job_name: test-lint
  truncate_stack_traces: true
env:
  JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jre/21.0.2-13.0.LTS/x64
  JAVA_HOME_21_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jre/21.0.2-13.0.LTS/x64
  CLOJURE_INSTALL_DIR: /tmp/usr/local/opt/ClojureTools
##[endgroup]
##[group]📘 Reading input values
##[endgroup]
##[group]📦 Process test results
Retrieved 1 reports to process.
##[error]❌ No test results found for JUnit Test Report

Am I missing something?

Thank you!

Thank you for the report, I'll have to look into that attached XML specifically and see why it might fail.

My pleasure! Thank you in advance!

the file appears to parse properly. Can it be the junit.xml is not in the given location? (e.g. workspace root witht the name junit.xml0?

Can you run it with debug log please, and see if you get additional ouptut may helpful?

the file appears to parse properly. Can it be the junit.xml is not in the given location? (e.g. workspace root witht the name junit.xml0?

🤦 doh! yeah, that was it.

I’d fuzzed over, in my head, the scope of the effect of the working-directory config on the steps in a job.

My workflow has this at the root level:

defaults:
  run:
    working-directory: system/platform/

And when I copy-pasted the structure into the YAML file I didn’t really “parse” it mentally, so I didn’t register that the setting effects only run steps. GitHub did a good job making that explicit in the structure but I was just in copy-pasta mode I guess.

That said, another reason I didn’t immediately think of this is because the action didn’t output a clear message like “no reports found” — in fact it output Retrieved 1 reports to process. — I interpreted that to mean that it had found the file. I mean, what else could it mean?

So maybe this could turn into a minor bug report? Or a minor enhancement request? I think the output of the action could definitely be clearer in a situation like this.

Apart from that minor thought, it’s now working great for me. I’ll leave this open for now just in case you want to consider it a bug report maybe, but of course feel free to close it. Thank you so much!

Thank you very much for providing more details.

I fully agree, that message could be better, it was intended to describe that 1 report was configured to be processed, but it's not clear by that wording.

My pleasure!

OK, cool.

I hope you don’t mind but I have a few suggestions, feel free to ignore:

  • I suggest changing that existing message to something like Searching N paths for reports
  • I suggest adding a new message (not a debug message but a regular output) along the lines of Found N reports to parse
  • And maybe even an additional message: Successfully parsed N reports

Thanks again!

Thank you for the proposal.

Unfortunately, there is no point where we know the amount of found reports, as the globber works async. so we will only have the end result.