aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-01-28 11:14:52 +0000
committerdakkar <dakkar@luxion>2006-01-28 11:14:52 +0000
commit77591ad357f28be9a727710a1dfc5e044a459000 (patch)
treeb7c854aaad81bb07feab72560f7e79862340bc94
parentil driver fa le due passate, fix #1 (diff)
downloadWebCoso-77591ad357f28be9a727710a1dfc5e044a459000.tar.gz
WebCoso-77591ad357f28be9a727710a1dfc5e044a459000.tar.bz2
WebCoso-77591ad357f28be9a727710a1dfc5e044a459000.zip
pipeline fatte e testate, forse fix #2
git-svn-id: svn://luxion/repos/WebCoso/trunk@142 fcb26f47-9200-0410-b104-b98ab5b095f3
-rw-r--r--lib/WebCoso/Pipeline/Base.pm20
-rw-r--r--lib/WebCoso/Step/Base.pm14
-rw-r--r--t/03-pipeline.t32
-rw-r--r--t/lib/WebCoso/Pipeline/Test.pm5
-rw-r--r--t/lib/WebCoso/Step/Step1.pm11
-rw-r--r--t/lib/WebCoso/Step/Step2.pm13
6 files changed, 69 insertions, 26 deletions
diff --git a/lib/WebCoso/Pipeline/Base.pm b/lib/WebCoso/Pipeline/Base.pm
index 7018fc0..1e43d4d 100644
--- a/lib/WebCoso/Pipeline/Base.pm
+++ b/lib/WebCoso/Pipeline/Base.pm
@@ -10,25 +10,31 @@ __PACKAGE__->mk_classdata('_steps');
sub set_steps {
my ($class,@steps)=@_;
- my @full_steps=map {
- my $full_step_name="WebCoso::Step::$_";
+ my @step_instances=();
+
+ while (@steps) {
+ my $step_name=shift @steps;
+ my $step_init_args=shift @steps;
+
+ my $full_step_name="WebCoso::Step::$step_name";
if (! WebCoso::Step->is_step($full_step_name)) {
WebCoso::X::NoSuchStep->throw(
pipeline => $class,
step => $_,
);
}
- $full_step_name;
- } @steps;
- $class->_steps([@full_steps]);
+ push @step_instances,$full_step_name->new($step_init_args);
+ }
+
+ $class->_steps([@step_instances]);
}
sub process {
- my ($class, $resource)=@_;
+ my ($class, $resource,$stage)=@_;
for my $step (@{$class->_steps()}) {
- $resource = $step->process($resource);
+ $resource = $step->process($resource,$stage);
}
return 1;
diff --git a/lib/WebCoso/Step/Base.pm b/lib/WebCoso/Step/Base.pm
new file mode 100644
index 0000000..f15370c
--- /dev/null
+++ b/lib/WebCoso/Step/Base.pm
@@ -0,0 +1,14 @@
+package WebCoso::Step::Base;
+use strict;
+use warnings;
+use WebCoso::X;
+use WebCoso::Step;
+
+sub new {
+ my ($class,$arg_ref)=@_;
+
+ my $self={%$arg_ref};
+ return bless $self,$class;
+}
+
+1;
diff --git a/t/03-pipeline.t b/t/03-pipeline.t
index 0095596..85b769c 100644
--- a/t/03-pipeline.t
+++ b/t/03-pipeline.t
@@ -21,15 +21,33 @@ WebCoso::Driver->run();
my @resources=WebCoso::Config->get_all_resources();
-my @calls1=WebCoso::Step::Step1->get_calls();
-is(scalar @calls1,1,"1 chiamata a Step1");
+my @calls1=WebCoso::Pipeline::Test->_steps()->[0]->get_calls();
+is(scalar @calls1,2,"2 chiamata a Step1");
is($calls1[0]->{resource},
$resources[0],
- 'risorsa giusta passata a Step1');
-
-my @calls2=WebCoso::Step::Step2->get_calls();
-is(scalar @calls2,1,"1 chiamata a Step2");
+ 'risorsa giusta passata a Step1(1)');
+is($calls1[1]->{resource},
+ $resources[0],
+ 'risorsa giusta passata a Step1(2)');
+is($calls1[0]->{stage},
+ 'meta',
+ 'stage1==meta (step1)');
+is($calls1[1]->{stage},
+ 'gen',
+ 'stage2==gen (step1)');
+
+my @calls2=WebCoso::Pipeline::Test->_steps()->[1]->get_calls();
+is(scalar @calls2,2,"2 chiamata a Step2");
is($calls2[0]->{resource},
$calls1[0]->{out_res},
- 'risorsa giusta passata a Step2');
+ 'risorsa giusta passata a Step2(1)');
+is($calls2[1]->{resource},
+ $calls1[1]->{out_res},
+ 'risorsa giusta passata a Step2(2)');
+is($calls2[0]->{stage},
+ 'meta',
+ 'stage1==meta (step2)');
+is($calls2[1]->{stage},
+ 'gen',
+ 'stage2==gen (step2)');
diff --git a/t/lib/WebCoso/Pipeline/Test.pm b/t/lib/WebCoso/Pipeline/Test.pm
index 2d13d69..8c339ff 100644
--- a/t/lib/WebCoso/Pipeline/Test.pm
+++ b/t/lib/WebCoso/Pipeline/Test.pm
@@ -3,7 +3,10 @@ use strict;
use warnings;
use base 'WebCoso::Pipeline::Base';
-__PACKAGE__->set_steps(qw(Step1 Step2));
+__PACKAGE__->set_steps(
+ Step1 => {p1 => 1},
+ Step2 => {p2 => 2}
+);
my @calls;
diff --git a/t/lib/WebCoso/Step/Step1.pm b/t/lib/WebCoso/Step/Step1.pm
index 8a36d1d..9b18d16 100644
--- a/t/lib/WebCoso/Step/Step1.pm
+++ b/t/lib/WebCoso/Step/Step1.pm
@@ -1,24 +1,25 @@
package WebCoso::Step::Step1;
+use base 'WebCoso::Step::Base';
use strict;
use warnings;
-my @calls;
-
sub process {
- my ($class,$resource)=@_;
+ my ($self,$resource,$stage)=@_;
my $out='stuff';
- push @calls,{
+ push @{$self->{calls}},{
resource => $resource,
out_res => $out,
+ stage => $stage,
};
return $out;
}
sub get_calls {
- return @calls;
+ my ($self)=@_;
+ return @{$self->{calls}};
}
1;
diff --git a/t/lib/WebCoso/Step/Step2.pm b/t/lib/WebCoso/Step/Step2.pm
index 0868842..0a45e3c 100644
--- a/t/lib/WebCoso/Step/Step2.pm
+++ b/t/lib/WebCoso/Step/Step2.pm
@@ -1,24 +1,25 @@
package WebCoso::Step::Step2;
+use base 'WebCoso::Step::Base';
use strict;
use warnings;
-my @calls;
-
sub process {
- my ($class,$resource)=@_;
+ my ($self,$resource,$stage)=@_;
- my $out='other';
+ my $out='stuff';
- push @calls,{
+ push @{$self->{calls}},{
resource => $resource,
out_res => $out,
+ stage => $stage,
};
return $out;
}
sub get_calls {
- return @calls;
+ my ($self)=@_;
+ return @{$self->{calls}};
}
1;