function it_collects_and_publishes_the_metrics(MetricCollector $collector, MetricPublisher $publisher, InputInterface $input, OutputInterface $output)
 {
     $metrics = [new Metric('first', 1), new Metric('bar', 0.5)];
     $collector->collect()->shouldBeCalled()->willReturn($metrics);
     $publisher->publish($metrics)->shouldBeCalled();
     $this->run($input, $output);
 }
 function it_allows_to_add_a_collector(MetricCollector $first, MetricCollector $added)
 {
     $this->beConstructedWith([$first]);
     $this->addCollector($added);
     $m1 = new Metric('first', 1);
     $m2 = new Metric('second', 2);
     $first->collect()->willReturn([$m1]);
     $added->collect()->willReturn([$m2]);
     $this->collect()->shouldBeLike([$m1, $m2]);
 }
 /**
  * {@inheritdoc}
  */
 public function collect()
 {
     return array_map(function (Metric $metric) {
         return new Metric($this->namespace . '.' . $metric->getName(), $metric->getValue());
     }, $this->decoratedCollector->collect());
 }
 function it_prefixes_every_metric_with_the_namespace(MetricCollector $collector)
 {
     $collector->collect()->willReturn([new Metric('foo', 1), new Metric('bar.baz', 'string')]);
     $this->collect()->shouldBeLike([new Metric('my_namespace.foo', 1), new Metric('my_namespace.bar.baz', 'string')]);
 }