1. 07 1月, 2014 2 次提交
    • E
      event: share state driver between test:///default connections · fc967c3e
      Eric Blake 提交于
      Prior to this patch, every test:/// URI has its own event manager,
      which means that registering for an event can only ever receive
      events from the connection where it issued the API that triggered
      the event.  But the whole idea of events is to be able to learn
      about something where an API call did NOT trigger the action.
      
      In order to actually test asynchronous events, I wanted to be able
      to tie multiple test connections to the same state.  Use of a file
      in a test URI is still per-connection state, but now parallel
      connections to test:///default (from the same binary, of course)
      now share common state and can affect one another.
      
      The updated testsuite fails without the rest of this patch.
      Valgrind didn't report any leaks.
      
      * src/test/test_driver.c (testConnectOpen): Move per-connection
      state initialization...
      (testOpenFromFile): ...here.
      (defaultConn, defaultConnections, defaultLock, testOnceInit): New
      shared state.
      (testOpenDefault): Only initialize on first connection.
      (testConnectClose): Don't clobber state if still shared.
      * tests/objecteventtest.c (testDomainStartStopEvent): Enhance to
      cover this.
      (timeout, mymain): Ensure test fails rather than blocks.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      fc967c3e
    • E
      event: make deregister return value match docs · 31b5bad9
      Eric Blake 提交于
      Ever since their introduction (commit 1509b802 in v0.5.0 for
      virConnectDomainEventRegister, commit 44457238 in v0.8.0 for
      virConnectDomainEventDeregisterAny), the event deregistration
      functions have been documented as returning 0 on success;
      likewise for older registration (only the newer RegisterAny
      must return a non-zero callbackID).  And now that we are
      adding virConnectNetworkEventDeregisterAny for v1.2.1, it
      should have the same semantics.
      
      Fortunately, all of the stateful drivers have been obeying
      the docs and returning 0, thanks to the way the remote_driver
      tracks things (in fact, the RPC wire protocol is unable to
      send a return value for DomainEventRegisterAny, at least not
      without adding a new RPC number).  Well, except for vbox,
      which was always failing deregistration, due to failure to
      set the return value to anything besides its initial -1.
      
      But for local drivers, such as test:///default, we've been
      returning non-zero numbers; worse, the non-zero numbers have
      differed over time.  For example, in Fedora 12 (libvirt 0.8.2),
      calling Register twice would return 0 and 1 [the callbackID
      generated under the hood]; while in Fedora 20 (libvirt 1.1.3),
      it returns 1 and 2 [the number of callbacks registered for
      that event type].  Since we have changed the behavior over
      time, and since it differs by local vs. remote, we can safely
      argue that no one could have been reasonably relying on any
      particular behavior, so we might as well obey the docs, as well
      as prepare callers that might deal with older clients to not be
      surprised if the docs are not strictly followed.
      
      For consistency, this patch fixes the code for all drivers,
      even though it only makes an impact for vbox and for local
      drivers.  By fixing all drivers, future copy and paste from
      a remote driver to a local driver is less likely to
      reintroduce the bug.
      
      Finally, update the testsuite to gain some coverage of the
      issue for local drivers, including the first test of old-style
      domain event registration via function pointer instead of
      event id.
      
      * src/libvirt.c (virConnectDomainEventRegister)
      (virConnectDomainEventDeregister)
      (virConnectDomainEventDeregisterAny): Clarify docs.
      * src/libxl/libxl_driver.c (libxlConnectDomainEventRegister)
      (libxlConnectDomainEventDeregister)
      (libxlConnectDomainEventDeregisterAny): Match documentation.
      * src/lxc/lxc_driver.c (lxcConnectDomainEventRegister)
      (lxcConnectDomainEventDeregister)
      (lxcConnectDomainEventDeregisterAny): Likewise.
      * src/test/test_driver.c (testConnectDomainEventRegister)
      (testConnectDomainEventDeregister)
      (testConnectDomainEventDeregisterAny)
      (testConnectNetworkEventDeregisterAny): Likewise.
      * src/uml/uml_driver.c (umlConnectDomainEventRegister)
      (umlConnectDomainEventDeregister)
      (umlConnectDomainEventDeregisterAny): Likewise.
      * src/vbox/vbox_tmpl.c (vboxConnectDomainEventRegister)
      (vboxConnectDomainEventDeregister)
      (vboxConnectDomainEventDeregisterAny): Likewise.
      * src/xen/xen_driver.c (xenUnifiedConnectDomainEventRegister)
      (xenUnifiedConnectDomainEventDeregister)
      (xenUnifiedConnectDomainEventDeregisterAny): Likewise.
      * src/network/bridge_driver.c
      (networkConnectNetworkEventDeregisterAny): Likewise.
      * tests/objecteventtest.c (testDomainCreateXMLOld): New test.
      (mymain): Run it.
      (testDomainCreateXML): Check return values.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      31b5bad9
  2. 14 12月, 2013 1 次提交
  3. 11 12月, 2013 1 次提交
  4. 10 12月, 2013 5 次提交
  5. 25 11月, 2013 1 次提交
  6. 21 11月, 2013 1 次提交
    • E
      maint: fix comma style issues: remaining drivers · 64b2335c
      Eric Blake 提交于
      Most of our code base uses space after comma but not before;
      fix the remaining uses before adding a syntax check.
      
      * src/lxc/lxc_container.c: Consistently use commas.
      * src/openvz/openvz_driver.c: Likewise.
      * src/openvz/openvz_util.c: Likewise.
      * src/remote/remote_driver.c: Likewise.
      * src/test/test_driver.c: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      64b2335c
  7. 07 11月, 2013 1 次提交
  8. 04 10月, 2013 4 次提交
  9. 01 10月, 2013 3 次提交
  10. 26 9月, 2013 1 次提交
  11. 24 9月, 2013 2 次提交
  12. 17 9月, 2013 1 次提交
  13. 11 9月, 2013 1 次提交
  14. 28 8月, 2013 1 次提交
  15. 17 8月, 2013 3 次提交
  16. 11 7月, 2013 1 次提交
  17. 10 7月, 2013 1 次提交
  18. 03 7月, 2013 3 次提交
  19. 25 6月, 2013 1 次提交
  20. 21 5月, 2013 1 次提交
  21. 10 5月, 2013 1 次提交
  22. 08 5月, 2013 1 次提交
    • D
      Separate virGetHostname() API contract from driver APIs · ead63031
      Daniel P. Berrange 提交于
      Currently the virGetHostname() API has a bogus virConnectPtr
      parameter. This is because virtualization drivers directly
      reference this API in their virDriverPtr tables, tieing its
      API design to the public virConnectGetHostname API design.
      
      This also causes problems for access control checks since
      these must only be done for invocations from the public
      API, not internal invocation.
      
      Remove the bogus virConnectPtr parameter, and make each
      hypervisor driver provide a dedicated function for the
      driver API impl. This will allow access control checks
      to be easily inserted later.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ead63031
  23. 02 5月, 2013 1 次提交
    • M
      virutil: Move string related functions to virstring.c · 7c9a2d88
      Michal Privoznik 提交于
      The source code base needs to be adapted as well. Some files
      include virutil.h just for the string related functions (here,
      the include is substituted to match the new file), some include
      virutil.h without any need (here, the include is removed), and
      some require both.
      7c9a2d88
  24. 24 4月, 2013 2 次提交