17492: Adds test confirming that req-id is added on exceptions.
authorLucas Di Pentima <lucas.dipentima@curii.com>
Tue, 8 Feb 2022 15:44:52 +0000 (12:44 -0300)
committerLucas Di Pentima <lucas.dipentima@curii.com>
Tue, 8 Feb 2022 15:44:52 +0000 (12:44 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>

sdk/ruby/Gemfile
sdk/ruby/lib/arvados.rb
sdk/ruby/test/test_request_id.rb [new file with mode: 0644]

index 3e300b3e5700e87534e6a0040b2d7783423a0b31..1972df614e02a65234e24d8153454f1bf3bda8fb 100644 (file)
@@ -6,4 +6,5 @@ source 'https://rubygems.org'
 gemspec
 gem 'rake'
 gem 'minitest', '>= 5.0.0'
+gem 'mocha', require: false
 gem 'signet', '<= 0.11'
index 023a1f829ca9f91e832045dfc1fdf37d72cdf1c2..a72a9f8241f442f20d6c7559baedeb79582cc218 100644 (file)
@@ -29,7 +29,7 @@ class Arvados
         super(*args)
       rescue => e
         if !e.message.match(/.*req-[0-9a-zA-Z]{20}.*/)
-          e.message += "\nRequest ID: #{e.headers['X-Request-Id'] or @request_id}"
+          raise $!, "#{$!} (Request ID: #{@request_id})", $!.backtrace
         end
         raise e
       end
diff --git a/sdk/ruby/test/test_request_id.rb b/sdk/ruby/test/test_request_id.rb
new file mode 100644 (file)
index 0000000..2e25210
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+require "arvados"
+require "mocha/minitest"
+
+class FakeError < StandardError; end
+class RequestIdTest < Minitest::Test
+    def test_raise_exception_with_request_id
+        arv = Arvados.new
+        clnt = arv.client
+        assert_nil clnt.request_id
+
+        Google::APIClient.any_instance.stubs(:execute).raises(FakeError.new("Uh-oh..."))
+        err = assert_raises(FakeError) do
+            arv.collection.get(uuid: "zzzzz-4zz18-zzzzzzzzzzzzzzz")
+        end
+        assert clnt.request_id != nil
+        assert_match /Uh-oh.*\(Request ID: req-[0-9a-zA-Z]{20}\)/, err.message
+    end
+end
\ No newline at end of file