diff --git a/lib/coursemology/evaluator/logging/docker_log_subscriber.rb b/lib/coursemology/evaluator/logging/docker_log_subscriber.rb index 2ee2ee1..4403d57 100644 --- a/lib/coursemology/evaluator/logging/docker_log_subscriber.rb +++ b/lib/coursemology/evaluator/logging/docker_log_subscriber.rb @@ -1,4 +1,8 @@ class Coursemology::Evaluator::Logging::DockerLogSubscriber < ActiveSupport::LogSubscriber + def pull(event) + info "#{color("Docker Pull (#{event.duration.round(1)}ms)", GREEN)} #{event.payload[:image]}" + end + def create(event) info "#{color("Docker Create (#{event.duration.round(1)}ms)", MAGENTA)} "\ "#{event.payload[:image]} => #{event.payload[:container].id}" diff --git a/lib/coursemology/evaluator/services/evaluate_programming_package_service.rb b/lib/coursemology/evaluator/services/evaluate_programming_package_service.rb index f7b199c..ad773e4 100644 --- a/lib/coursemology/evaluator/services/evaluate_programming_package_service.rb +++ b/lib/coursemology/evaluator/services/evaluate_programming_package_service.rb @@ -44,9 +44,13 @@ def execute def create_container(image) image_identifier = "coursemology/evaluator-image-#{image}" + ActiveSupport::Notifications.instrument('pull.docker.evaluator.coursemology', + image: image_identifier) do + Docker::Image.create('fromImage' => image_identifier) + end + ActiveSupport::Notifications.instrument('create.docker.evaluator.coursemology', image: image_identifier) do |payload| - Docker::Image.create('fromImage' => image_identifier) payload[:container] = Docker::Container.create('Image' => image_identifier) end end diff --git a/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb b/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb index f9b7d7c..5213f20 100644 --- a/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb +++ b/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb @@ -25,6 +25,11 @@ container end + it 'instruments the pull' do + expect { subject.send(:create_container, image) }.to \ + instrument_notification('pull.docker.evaluator.coursemology') + end + it 'instruments the creation' do expect { subject.send(:create_container, image) }.to \ instrument_notification('create.docker.evaluator.coursemology')