[libvirt] [libvirt-tck 2/3] Add module for hooks testing

Osier jyang at redhat.com
Tue Oct 19 07:40:15 UTC 2010


updated patches attached.. adopted 'Slurp' in function 'compare_log'
instead of using "$/". :-)

and add 'Slurp' requirement in 'Build.pl'

- Osier
----- "Osier" <jyang at redhat.com> wrote:

> ----- "Daniel P. Berrange" <berrange at redhat.com> wrote:
> 
> > On Mon, Oct 18, 2010 at 07:18:08AM +0800, Osier Yang wrote:
> > > To test daemon, qemu, lxc hook.
> > > 
> > > * lib/Sys/Virt/TCK/Hooks.pm
> > > ---
> > >  lib/Sys/Virt/TCK/Hooks.pm |  262
> > +++++++++++++++++++++++++++++++++++++++++++++
> > >  1 files changed, 262 insertions(+), 0 deletions(-)
> > >  create mode 100644 lib/Sys/Virt/TCK/Hooks.pm
> > > 
> > > diff --git a/lib/Sys/Virt/TCK/Hooks.pm
> b/lib/Sys/Virt/TCK/Hooks.pm
> > 
> > > +sub libvirtd_status {
> > > +    my $self = shift;
> > > +    my $status = `service libvirtd status`;
> > > +    my $_ = $status;
> > > +
> > > +    if (/running/) {
> > > +        $self->{libvirtd_status} = 'running';
> > > +    } elsif (/stopped/) {
> > > +        $self->{libvirtd_status} = 'stopped';
> > > +    }
> > > +
> > > +    return $self;
> > > +}
> > 
> > > +sub service_libvirtd {
> > > +    my $self = shift;
> > > +    my $action = $self->{action};
> > > +
> > > +    truncate $self->{log_name}, 0 if -f $self->{log_name};
> > > +
> > > +    die "failed on $action daemon" if system "service libvirtd
> > $action"; 
> > > +
> > > +    $self->libvirtd_status;
> > > +}
> > 
> > Is there any way we can avoid having to start/stop libvirtd
> > for this testing ?  The general goal of the TCK is that it
> > is testing an existing deployment, so it should be expecting
> > that libvirtd is already up & running in a desired configuration.
> > 
> > If we have to stop/start libvirtd, then the test script using
> > these APIs will need to be protected to make sure it only
> > runs when used with 'qemu:///system' or 'lxc://'.  ie is skipped
> > with qemu:///session or vmware, or virtualbox, etc
> > 
> 
> For daemon hook testing, It's neccessary to start/stop/restart the 
> libvirtd. Otherwise we can't see if the hook script is invoked or
> not.
> It doesn't relate to which hypervisor driver is used..
> 
> > > +
> > > +sub compare_log {
> > > +    my $self = shift;
> > > +    
> > > +    my $expect_log = $self->{expect_log};
> > > +    my $log_name = $self->{log_name};
> > > +
> > > +    open LOG, "< $log_name" or die "failed on opening $log_name:
> > $!";
> > > +    
> > > +    my @lines = <LOG>;
> > > +
> > > +    return 0 unless @lines;
> > > +
> > > +    chomp foreach @lines;
> > > +    my $actual_log = join "\n", @lines;
> > > +
> > > +    close LOG;
> > 
> > Little perl black magic tip for you.... 
> > 
> > If you want to read the entire file contents into a single
> > string, then you can do
> > 
> >   open LOG, "<$log_name";
> >   local $/ = undef;
> >   my $actual_log = <LOG>;
> >   close LOG;
> > 
> > '$/' is the line separator. By setting it to 'undef' we tell
> > Perl that there is no line separator, so it will immediately
> > read until end of file :-)  BTW see 'man perlvar' for this 
> > particular example
> > 
> 
> cool trick.. will update it.. thanks.. :-)
> 
> > 
> > Daniel
> > -- 
> > |: Red Hat, Engineering, London    -o-  
> > http://people.redhat.com/berrange/ :|
> > |: http://libvirt.org -o- http://virt-manager.org -o-
> > http://deltacloud.org :|
> > |: http://autobuild.org        -o-        
> > http://search.cpan.org/~danberr/ :|
> > |: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742
> 7D3B
> > 9505 :|
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-Add-module-for-hooks-testing.patch
Type: text/x-patch
Size: 6932 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20101019/fbe7a4d0/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Add-Slurp-requirement.patch
Type: text/x-patch
Size: 590 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20101019/fbe7a4d0/attachment-0003.bin>


More information about the libvir-list mailing list