App-Netdisco

 view release on metacpan or  search on metacpan

xt/30-backend-workers.t  view on Meta::CPAN

#!/usr/bin/env perl

use strict; use warnings;

BEGIN { $ENV{DANCER_ENVDIR} = '/dev/null'; }

use Test::More 0.88;
use Test::File::ShareDir::Dist { 'App-Netdisco' => 'share/' };

use lib 'xt/lib';

use App::Netdisco;
use App::Netdisco::DB; # fake device row
use App::Netdisco::Backend::Job;

use Try::Tiny;
use Dancer qw/:moose :script !pass/;

# configure logging to force console output
my $CONFIG = config();
$CONFIG->{logger} = 'console';
$CONFIG->{log} = ($ENV{'DANCER_DEBUG'} ? 'debug' : 'error');
Dancer::Logger->init('console', $CONFIG);

{
  package MyWorker;
  use Moo;
  with 'App::Netdisco::Worker::Runner';
}

# clear user device_auth and set our own
config->{'device_auth'} = [{driver => 'snmp'}, {driver => 'cli'}];

# TESTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

my $j1 = do_job('TestOne');
is($j1->status, 'done', 'status is done');
is($j1->log, 'OK: SNMP driver is successful.',
  'workers are run in decreasing priority until done');

my $j2 = do_job('TestTwo');
is($j2->status, 'done', 'status is done');
is($j2->log, 'OK: CLI driver is successful.',
  'lower priority driver not run if higher is successful');

config->{'device_auth'} = [];

my $j3 = do_job('TestOne');
is($j3->status, 'defer', 'status is defer');
is($j3->log, 'deferred job with no device creds',
  'no matching config for workers');

config->{'device_auth'} = [{driver => 'snmp'}];

my $j4 = do_job('TestThree');
is($j4->status, 'done', 'status is done');
is($j4->log, 'OK: SNMP driver is successful.',
  'respect user config filtering the driver');

config->{'device_auth'} = [
  {driver => 'snmp', action => 'testthree'},
  {driver => 'cli',  action => 'foo'},
];

my $j5 = do_job('TestThree');
is($j5->status, 'done', 'status is done');
is($j5->log, 'OK: SNMP driver is successful.',
  'respect user config filtering the action');

config->{'device_auth'} = [
  {driver => 'snmp', action => 'testthree::_base_'},
  {driver => 'cli',  action => 'testthree::foo'},
];

my $j6 = do_job('TestThree');
is($j6->status, 'done', 'status is done');



( run in 3.404 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )