[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH 2/3] ts-tcpdump-start: New test step script
Sets up a tcpdump on a dom0. (We do not log traffic to other test boxes in the job because that might include large amounts of migration or test data.) Also arrange that: - We stop the tcpdump when doing log capture - We capture the tcpdump record (by adding a big pattern to the log list) - We do not treat the tcpdump as a leaked process With this, a new step can be added to existing jobs as needed. (The "killall tcpdump ||:" is duplicated in ts-tcpdump-start and ts-logs-capture because the error handling ought to be different, so that a refactoring to make it common would add more complexity than it saves.) Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> fixup! ts-tcpdump-start: New test step script --- ts-leak-check | 4 ++++ ts-logs-capture | 13 ++++++++++++ ts-tcpdump-start | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100755 ts-tcpdump-start diff --git a/ts-leak-check b/ts-leak-check index ec40435..e6c1647 100755 --- a/ts-leak-check +++ b/ts-leak-check @@ -80,6 +80,10 @@ sub start_check () { push @suppress, $&; } + if ($r{"$ho->{Ident}_tcpdump"}) { + push @suppress, '^process .* tcpdump$'; + } + my $leaf= "leak-current-$ho->{Name}"; $statefh= open_unique_stashfile(\$leaf); } diff --git a/ts-logs-capture b/ts-logs-capture index 453b03d..1b171cb 100755 --- a/ts-logs-capture +++ b/ts-logs-capture @@ -33,6 +33,16 @@ our ($whhost) = @ARGV; $whhost ||= 'host'; our $ho= selecthost($whhost); +sub stop_traces ($) { + my ($lho) = @_; + if ($r{"$lho->{Ident}_tcpdump"}) { + eval { + target_cmd_root($lho, "killall tcpdump ||:"); + }; + warn $@ if length $@; + }; +} + sub try_fetch_logs ($$) { my ($lho, $logfilepats) = @_; my $ok= 0; @@ -136,6 +146,8 @@ sub fetch_logs_host_guests () { /home/osstest/osstest-confirm-booted.log + /var/log/osstest-* + )]; if (!try_fetch_logs($ho, $logs)) { logm("log fetching failed, trying hard host reboot..."); @@ -220,6 +232,7 @@ sub fetch_logs_guest ($) { } } +stop_traces($ho); serial_fetch_logs($ho); fetch_logs_host_guests(); logm("logs captured to $stash"); diff --git a/ts-tcpdump-start b/ts-tcpdump-start new file mode 100755 index 0000000..60e499d --- /dev/null +++ b/ts-tcpdump-start @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# This is part of "osstest", an automated testing framework for Xen. +# Copyright (C) 2009-2013 Citrix Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +use strict qw(vars); +use Osstest; +use Osstest::TestSupport; + +tsreadconfig(); + +@ARGV==1 or die; +our ($whhost) = @ARGV; +our $ho = selecthost($whhost); + +my $ether = $r{"$ho->{Ident}_physnic"} // 'eth0'; + +my $dump = '/var/log/osstest-tcpdump'; + +use Data::Dumper; + +sub start () { + my $runningk = "$ho->{Ident}_tcpdump"; + if ($r{$runningk}) { + target_cmd_root($ho, "killall tcpdump ||:"); + } + + my @excludeips; + foreach my $k (sort keys %r) { + next unless $k =~ m/^(?:\w+_)?host$/; + next if $k eq $ho->{Ident}; + logm("checking whether to exclude traffic to other test host $k"); + eval { + my $otherho = selecthost $k; + push @excludeips, $otherho->{Ip}; + }; + warn $@ if length $@; + } + + my $cmd= "tcpdump -p -w$dump -i$ether"; + $cmd .= join " and ", map { "not ip host $_" } @excludeips; + + store_runvar($runningk, 1); + + target_cmd_root($ho, "$cmd </dev/null >$dump.log 2>&1 & sleep 1"); +} + +start(); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |