summaryrefslogtreecommitdiff
path: root/spec/integration
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-08-19 12:52:44 -0600
committermo khan <mo.khan@gmail.com>2020-08-19 13:36:03 -0600
commit13f23838dcd280c3ed079ad5de51763068668935 (patch)
tree8252c9c29227a77e2b59d4f0bdcadc0b2cc0a718 /spec/integration
parent99a89248b2e6c08bf7a5c6c7950793b1418b9555 (diff)
test: add performance specs
Diffstat (limited to 'spec/integration')
-rw-r--r--spec/integration/c/conan_spec.rb1
-rw-r--r--spec/integration/dotnet/nuget_spec.rb29
-rw-r--r--spec/integration/go/modules_spec.rb16
-rw-r--r--spec/integration/rust/cargo_spec.rb16
4 files changed, 35 insertions, 27 deletions
diff --git a/spec/integration/c/conan_spec.rb b/spec/integration/c/conan_spec.rb
index 86025bd..52b7a39 100644
--- a/spec/integration/c/conan_spec.rb
+++ b/spec/integration/c/conan_spec.rb
@@ -15,6 +15,7 @@ RSpec.describe "conan" do
end
specify { expect(subject).to match_schema }
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
specify { expect(subject.dependency_names).to match_array(%w[openssl poco]) }
specify { expect(subject.licenses_for('openssl')).to match_array(['OpenSSL']) }
specify { expect(subject.licenses_for('poco')).to match_array(['BSL-1.0']) }
diff --git a/spec/integration/dotnet/nuget_spec.rb b/spec/integration/dotnet/nuget_spec.rb
index 5bda5db..c72296e 100644
--- a/spec/integration/dotnet/nuget_spec.rb
+++ b/spec/integration/dotnet/nuget_spec.rb
@@ -3,6 +3,10 @@
require 'spec_helper'
RSpec.describe "nuget" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { {} }
+
before do
system("rm -fr /opt/gitlab/.nuget/packages")
end
@@ -28,13 +32,14 @@ RSpec.describe "nuget" do
XML
end
- it 'produces a valid report' do
+ before do
runner.add_file('packages.config', packages_config)
- report = runner.scan
+ end
- expect(report).to match_schema
- expect(report[:licenses].count).not_to be_zero
- expect(report.dependency_names).to match_array([
+ it 'produces a valid report' do
+ expect(subject).to match_schema
+ expect(subject[:licenses].count).not_to be_zero
+ expect(subject.dependency_names).to match_array([
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform",
"Microsoft.Net.Compilers",
"Microsoft.Web.Infrastructure",
@@ -47,6 +52,8 @@ RSpec.describe "nuget" do
"jive"
])
end
+
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
end
context "when a project has multiple nuget packages.config in different sub directories" do
@@ -80,8 +87,6 @@ RSpec.describe "nuget" do
end
context "when a project has a dependency that has indirect dependencies" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-transient-dependencies'))
end
@@ -103,8 +108,6 @@ RSpec.describe "nuget" do
end
context "when scanning a VB.NET project" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-vbproj'))
end
@@ -117,8 +120,6 @@ RSpec.describe "nuget" do
end
context "when scanning a F# project" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-fsproj'))
end
@@ -131,8 +132,6 @@ RSpec.describe "nuget" do
end
context "when scanning a solution file with multiple projects" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-sln'))
end
@@ -201,10 +200,6 @@ RSpec.describe "nuget" do
end
context "when fetching dependencies from a custom registry" do
- subject { runner.scan(env: env) }
-
- let(:env) { {} }
-
before do
add_host('nuget.test', '127.0.0.1')
start_proxy_server
diff --git a/spec/integration/go/modules_spec.rb b/spec/integration/go/modules_spec.rb
index 3edef74..7d85b9f 100644
--- a/spec/integration/go/modules_spec.rb
+++ b/spec/integration/go/modules_spec.rb
@@ -3,6 +3,10 @@
require 'spec_helper'
RSpec.describe "modules" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { {} }
+
before do
# Delete go module cache
system('rm -fr /opt/gitlab/.local/pkg')
@@ -13,8 +17,6 @@ RSpec.describe "modules" do
['1.11', '1.12', '1.13', '1.14'].each do |version|
context "when scanning a go.mod and go.sum files with v#{version}" do
- subject { runner.scan }
-
before do
runner.add_file('main.go', fixture_file_content('go/main.go'))
runner.add_file('go.mod', fixture_file_content('go/go.mod'))
@@ -53,8 +55,6 @@ RSpec.describe "modules" do
end
context "when scanning the `gitaly` project" do
- subject { runner.scan }
-
before do
runner.clone('https://gitlab.com/gitlab-org/gitaly.git')
end
@@ -64,11 +64,11 @@ RSpec.describe "modules" do
expect(subject[:licenses]).not_to be_empty
expect(subject[:dependencies]).not_to be_empty
end
+
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
end
context "when scanning the `gitlab-runner` project" do
- subject { runner.scan }
-
before do
runner.clone('https://gitlab.com/gitlab-org/gitlab-runner.git')
end
@@ -82,8 +82,6 @@ RSpec.describe "modules" do
end
context "when scanning a project with vendored modules" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('go/1.14-vendored-modules'))
end
@@ -108,8 +106,6 @@ RSpec.describe "modules" do
end
context "when scanning a project sourced from a TLS endpoint with a X.509 certificate signed by a private authority" do
- subject { runner.scan(env: env) }
-
before do
add_host('goproxy.test', '127.0.0.1')
start_proxy_server
diff --git a/spec/integration/rust/cargo_spec.rb b/spec/integration/rust/cargo_spec.rb
index 3ab010d..a0f2550 100644
--- a/spec/integration/rust/cargo_spec.rb
+++ b/spec/integration/rust/cargo_spec.rb
@@ -7,6 +7,11 @@ RSpec.describe "cargo" do
let(:env) { {} }
+ before do
+ install_dir = '/opt/asdf/installs/rust'
+ system("rm -r #{install_dir}") if Dir.exist?(install_dir)
+ end
+
context "when scanning a cargo project" do
before do
runner.mount(dir: fixture_file('rust/cargo/hello_world'))
@@ -57,4 +62,15 @@ RSpec.describe "cargo" do
expect(subject.dependency_names).not_to include('pretty_assertions')
end
end
+
+ context "when scanning https://gitlab.com/inko-lang/inko.git" do
+ let(:env) { { 'LICENSE_FINDER_CLI_OPTS' => '--aggregate-paths=vm compiler' } }
+
+ before do
+ runner.clone('https://gitlab.com/inko-lang/inko.git')
+ end
+
+ specify { expect(subject).to match_schema }
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
+ end
end