On Fri, Mar 16, 2012 at 7:35 AM, Eric Blake <eblake@redhat.com> wrote:
> On 03/15/2012 08:26 PM, Jesse Cook wrote:
>>
>> v0.9.10 client did not want to play nicely with the v0.9.10 server via
>> qemu+ssh.  I got frustrated and just tried running the test from a
>> client running an older version of libvirt.  When connecting to
>> v0.9.10, it behaved the same way the pre-patched did in my cover
>> letter.  I don't have full test results because of the communication
>> errors I was getting. I'll try to either figure it out tomorrow or
>> just use the older version as the client (pre-patch and patch).
>
> Since qemu already uses rpc mechanism, I've found it easy to
> mix-and-match by doing this in two terminals both logged in as root, and
> both located in a libvirt.git checkout directory (if you don't mind
> building as root; if you do mind building as root, then have three,
> where the third is a regular user running as non-root to do the builds):
>
> setup:
> 1# git clone libvirt ...
> 1# cd libvirt
> 1# ./autobuild.sh --system
> 1# apply patches I'm interested in testing
> 1# make
> 2# cd libvirt
>
> old libvirtd server, old virsh client:
> 1# service libvirtd start
> 2# virsh ...
> 1# service libvirtd stop
>
> old libvirtd, new virsh
> 1# service libvirtd start
> 2# tools/virsh ...
> 1# service libvirtd stop
>
> new libvirtd, old virsh
> 1# daemon/libvirtd
> 2# virsh ...
> 1# Ctrl-C
>
> new libvirtd, new virsh
> 1# daemon/libvirtd
> 2# tools/virsh ...
> 1# Ctrl-C
>
> That gives me testing of all four protocol combinations, assuming that
> the installed version is a current release without my patch, and my
> just-built in-tree version has my patch.  No need to complicate protocol
> testing with multi-host qemu+ssh:// stuff.
>
> --
> Eric Blake   eblake@redhat.com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>

Eric,

Thanks.  v0.9.10 was giving me a lot of trouble, so I just compiled two versions of the test code in the cover letter.  One uses the patched libs and one the unchanged libs.

N.B. I compiled the patched version using the following change due to the issues with using 65536:

/* Upper limit on lists of storage pool names. */
-const REMOTE_STORAGE_POOL_NAME_LIST_MAX = 256;
+const REMOTE_STORAGE_POOL_NAME_LIST_MAX = 7084;

Results:

With the patched version of libvirt installed and unpatched libvirtd running:

for i in `ls -1 /etc/libvirt/storage/*`; do virsh pool-start $(basename $i .xml); done &>/dev/null
~/pool-test-unpatched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Before virConnectListStoragePools
libvir: Remote error : too many remote undefineds: 407 > 256
After virConnectListStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Inactive: -1
~/pool-test-patched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Before virConnectListStoragePools
After virConnectListStoragePools
Active: 407
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Inactive: -1
for i in `ls -1 /etc/libvirt/storage/*`; do virsh pool-destroy $(basename $i .xml); done &>/dev/null
~/pool-test-unpatched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Before virConnectListDefinedStoragePools
libvir: Remote error : too many remote undefineds: 407 > 256
After virConnectListDefinedStoragePools
Inactive: -1
~/pool-test-patched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Before virConnectListDefinedStoragePools
After virConnectListDefinedStoragePools
Inactive: 407


With the unchanged version of libvirt installed and unpatched libvirtd running:

for i in `ls -1 /etc/libvirt/storage/*`; do virsh pool-start $(basename $i .xml); done &>/dev/null
~/pool-test-unpatched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Before virConnectListStoragePools
libvir: Remote error : too many remote undefineds: 407 > 256
After virConnectListStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Inactive: -1
~/pool-test-patched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Before virConnectListStoragePools
libvir: RPC error : internal error maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX
After virConnectListStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Inactive: -1
for i in `ls -1 /etc/libvirt/storage/*`; do virsh pool-destroy $(basename $i .xml); done &>/dev/null
~/pool-test-unpatched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Before virConnectListDefinedStoragePools
libvir: Remote error : too many remote undefineds: 407 > 256
After virConnectListDefinedStoragePools
Inactive: -1
~/pool-test-patched
Before virConnectNumOfStoragePools
After virConnectNumOfStoragePools
Active: -1
Before virConnectNumOfDefinedStoragePools
After virConnectNumOfDefinedStoragePools
Before virConnectListDefinedStoragePools
libvir: RPC error : internal error maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX
After virConnectListDefinedStoragePools
Inactive: -1

-- Jesse