Commit graph

726 commits

Author SHA1 Message Date
Lubomir Rintel
502b45f0d4 tests: raise the mock service startup timeout
Python is just too slow on some machines. Needed around twice the previous
limit on BCM2835 with Pidora 20, let's add some safety margin too.

(cherry picked from commit 81cc4d27b1)
2015-08-17 10:54:05 +02:00
Thomas Haller
ad3d4a032c libnm-glib: add NM_AVAILABLE_IN_1_0_6 for new API nm_access_point_get_last_seen()
Fixes: cdb8a44a6e
2015-08-09 11:04:13 +02:00
Mathieu Trudel-Lapierre
cdb8a44a6e wifi: expose the last_seen property for a NMAccessPoint
https://mail.gnome.org/archives/networkmanager-list/2015-April/msg00053.html
2015-08-07 12:38:24 -05:00
Dan Williams
774170016b libnm/libnm-glib: don't quit in the middle of asking for secrets (bgo #752237)
If the VPN plugin terminated and the user started it again, then the
quit timer will still be running and it sometimes happens that the
VPN plugin will quit while the UI is asking the user for secrets.
That's not very nice, so don't do that.

Reproducer: while connect to the VPN, suspend your laptop.  Then
resume it, and immediately re-start the VPN connection.  Watch the
secrets dialog disappear within a very short time.

https://bugzilla.gnome.org/show_bug.cgi?id=752237
2015-07-16 16:52:48 -05:00
Dan Williams
d22a2a3165 libnm/libnm-glib: clean up VPN plugin timeouts
Use nm_clear_g_source().
2015-07-16 16:52:48 -05:00
Thomas Haller
b0a33247c3 libnm-glib: avoid coverity warning
5. NetworkManager-1.0.3/libnm-glib/nm-remote-settings.c:493: var_compare_op: Comparing "error" to null implies that "error" might be null.
  8. NetworkManager-1.0.3/libnm-glib/nm-remote-settings.c:508: var_deref_op: Dereferencing null pointer "error".
  #   506|   			g_hash_table_remove (priv->pending, path);
  #   507|
  #   508|-> 		if (print_once && error->code == DBUS_GERROR_LIMITS_EXCEEDED) {
  #   509|   			g_printerr ("Warning: libnm-glib:%s(): a D-Bus limit exceeded: %s. The application might not work properly.\n"
  #   510|   			            "Consider increasing max_replies_per_connection limit in /etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf "

(cherry picked from commit c157e3233d)
2015-06-25 20:50:54 +02:00
Lubomir Rintel
0f95b5c345 builds: only enable TAP driver for glib >= 2.37.6
No TAP support for previous versions and --tap argument is silently ignored,
confusing the TAP driver.

(cherry picked from commit c47c06470a)
2015-06-19 11:52:50 +02:00
Lubomir Rintel
fe3e32c034 tests: use the TAP formatter
The test results in standard format are easily integrated into CI systems.

(cherry picked from commit 6463ce5dd9)
2015-06-19 11:52:50 +02:00
Lubomir Rintel
df11b267fd build: switch to parallel test harness
This will make it possible to use the TAP formatter.

(cherry picked from commit 380ed63318)
2015-06-19 11:52:50 +02:00
Lubomir Rintel
0e20868f4f tests: always spawn private d-bus
Parallel test runs would not be possible without this.

(cherry picked from commit d0e25ac8be)
2015-06-19 11:52:50 +02:00
Jiří Klimeš
84b3cb25b5 libnm-glib: print a bold warning about reaching a D-Bus limit
This causes incorrect application behaviour, so libnm-glib should warn
at least.
2015-05-29 08:29:04 +02:00
Jiří Klimeš
394a867e69 libnm-glib: do not access NULL GError variable (rh #1224819)
dbus_g_proxy_call() should set GError if returning FALSE. But apparently there
is a bug in dbus-glib and the error can be NULL.

https://bugzilla.redhat.com/show_bug.cgi?id=1224819

(cherry picked from commit f46eb1fc20)
2015-05-26 16:06:02 +02:00
Lubomir Rintel
1fff1a3d36 libnm,core: don't mix up enum types
Touches a weak spot on clang's soul.

(cherry picked from commit fd41aa451b)
2015-04-23 13:48:51 +02:00
Thomas Haller
87dc7af2dd libnm-glib/tests: fix calling tests without valgrind
Fixes: e7356ef0a6
(cherry picked from commit b0b15e4718)
2015-03-13 11:50:50 +01:00
Thomas Haller
26406d0868 libnm/tests: enable valgrind for libnm tests
(cherry picked from commit e7356ef0a6)
2015-03-13 11:50:05 +01:00
Thomas Haller
26f96871a1 libnm/tests: fix memleaks in test code for valgrind
(cherry picked from commit 76745817c3)
2015-03-13 11:50:05 +01:00
Thomas Haller
b9a8f3c059 tests: enable valgrind tests for tests
(cherry picked from commit c50f30e79c)
2015-03-13 11:50:04 +01:00
Rui Matos
01f358ec34 libnm-glib/nm-client: zero the CheckConnectivityData structure
Otherwise, if the caller doesn't provide a cancellable we'll try to
access a bogus ccd->cancellable in check_connectivity_data_free() and
crash.

https://bugzilla.gnome.org/show_bug.cgi?id=740841
(cherry picked from commit 8c32ea916b)
2015-01-08 16:16:18 +01:00
Dan Winship
3d47cf5823 libnm-glib: crash when NMRemoteSettings is quickly destroyed (bgo #742138)
NMRemoteSettings queues a bunch of async NMRemoteConnection creations,
but wasn't doing anything to ensure that it was still alive when they
completed. Pointed out by Cosimo Cecchi.

https://bugzilla.gnome.org/show_bug.cgi?id=742138
2015-01-05 15:38:38 -05:00
Dan Winship
7cb98206a1 libnm-util, libnm-glib: bump sonames for 1.0
libnm-util.so.2.7.0, libnm-glib.so.4.9.0
2014-12-18 13:46:11 -05:00
Dan Winship
a095e48f7b docs: misc small fixes
Cleans up all of the warnings that aren't overly annoying to clean up.
2014-12-18 13:46:11 -05:00
Jiří Klimeš
7ee93a0029 tests: mute coverity for CHECKED_RETURN (CWE-252) in tests
Error: CHECKED_RETURN (CWE-252): [#def12]
NetworkManager-0.9.11.0/libnm-core/tests/test-general.c:348: check_return: Calling "nm_setting_verify" without checking return value (as is done elsewhere 37 out of 45 times).
...

(cherry picked from commit 6603e7ffde)
2014-12-16 21:47:01 +01:00
Jiří Klimeš
78068d6bae libnm: add missing (transfer) annotation for nm_device_vlan_get_parent() 2014-11-25 12:48:11 +01:00
Jiří Klimeš
922a78d120 libnm-glib: add :parent property for VLAN devices 2014-11-24 10:33:22 +01:00
Dan Winship
53f5e9afa4 libnm*: fix library gettext usage
Libraries need to include <gi18n-lib.h>, not <gi18n.h>, so that _()
will get defined to "dgettext (GETTEXT_DOMAIN, string)" rather than
"gettext (string)" (which will use the program's default domain, which
works fine for programs in the NetworkManager tree, but not for
external users). Likewise, we need to call bindtextdomain() so that
gettext can find the translations if the library is installed in a
different prefix from the program using it (and
bind_textdomain_codeset(), so it will know the translations are in
UTF-8 even if the locale isn't).

(The fact that no one noticed this was broken before is because the
libraries didn't really start returning useful translated strings much
until 0.9.10, and none of the out-of-tree clients have been updated to
actually show those strings to users yet.)
2014-11-13 17:18:42 -05:00
Dan Winship
3bfb163a74 all: consistently include config.h
config.h should be included from every .c file, and it should be
included before any other include. Fix that.

(As a side effect of how I did this, this also changes us to
consistently use "config.h" rather than <config.h>. To the extent that
it matters [which is not much], quotes are more correct anyway, since
we're talking about a file in our own build tree, not a system
include.)
2014-11-13 17:18:42 -05:00
Lubomir Rintel
e9bfd0e29c tests: Don't run session-long dbus daemons for tests
They require a tty or X11 displays, thus are not suitable for headless runs
(such as in mock). Furthermore, they die with the tty or X11 session, which
is somehow late -- a lot of them may accumulate. Let's kill them right away.
2014-10-24 19:16:33 +02:00
Florian Müllner
261a3924d3 remote-settings: Mark service as running when using private bus
When using a private bus connection, the service is never marked
as running when settings are initialized asynchronously. Successfully
opening a socket in NM's runtime directory should already imply
a running service, so just mark it as such (as we already do in
the synchronous path).
2014-10-17 09:44:39 -04:00
Dan Winship
c9e0e66a80 libnm, libnm-glib: clarify nm_client_activate_connection() semantics
nm_client_activate_connection() and
nm_client_add_and_activate_connection() return when the activation has
*started*, not when it *finishes*. Clarify this a bit more in the
libnm docs, and copy that clarification to libnm-glib as well.

https://bugzilla.gnome.org/show_bug.cgi?id=736233
2014-10-05 11:21:16 -04:00
Thomas Haller
86ffea8004 libnm: ensure auto-registration only when not yet registered
Calling nm_secret_agent_register() on an already registered
instance leads to a warning. Ensure to call register during
auto-registration only when needed.

https://bugzilla.gnome.org/show_bug.cgi?id=727923

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-08-27 08:52:25 +02:00
Dan Winship
645ab39bb6 libnm, libnm-glib: fix cut-and-paste-os
Several nm-device-*.c files apparently originally used
nm-device-ethernet.c as a template, but missed a reference to "eth" in
class_init.
2014-08-18 11:10:42 -04:00
Dan Winship
7e791ce3fe libnm, libnm-glib: belatedly replace _nm_client_is_object_path()
_nm_client_is_object_path() had been copied from
g_variant_is_object_path() with a note that it should be replaced when
we depended on GLib > 2.24, but it got missed when we actually updated
the dependency. Fix it now. (Also fix a nearby typo.)
2014-08-07 15:43:42 -04:00
Dan Winship
48ad586209 libnm-glib: add tests of NMClient:manager-running and NMRemoteSettings:service-running
Test that the code to track whether NetworkManager is running works
correctly.
2014-08-01 12:12:42 -04:00
Dan Winship
fe264a2d01 libnm-glib: fix a crash when using multiple NMClients
NMObjectCache was assuming there would never be more than one object
with the same path, but since NMClient is an NMObject, it was getting
cached too, so if you created two clients and then unreffed one of
them, it's possible the wrong one could get left in the cache, causing
a crash the next time the other one called nm_object_cache_clear().

Fix this by only adding NMObjects to the cache in the codepaths where
we also check to see if the object was already in the cache.

(This also means we can remove the "except" argument to
nm_object_cache_clear(), since the NMClient won't be cached any more.)
2014-08-01 12:12:42 -04:00
Dan Winship
08b91199fb libnm-glib: make test-networkmanager-service.py automatically exit with its parent
test-nm-client.c and test-remote-settings-client.c were using their
own assertion macros so they could kill the test service on assertion
failure. Except that some new code didn't get the memo and used the
g_assert* macros. Not to mention that sometimes the tests would crash
outside of an assertion macro.

We can make test-networkmanager-service.py notice that its parent has
crashed by opening a pipe between them and taking advantage of the
fact that the pipe will be automatically closed if the parent crashes.
So then test-networkmanager-service.py just has to watch for that, and
exit if the pipe closes.

Then that lets us drop the test_assert* macros and just use g_assert*
instead.
2014-08-01 12:12:42 -04:00
Dan Winship
bd8a7f74b1 libnm-glib: split out test service launching code from tests 2014-08-01 12:12:42 -04:00
Dan Winship
ade4f2e84e libnm-glib: use automake test infrastructure for test programs
Use "TESTS = tests-nm-client test-remote-settings-client" rather than
overriding "check-local".

Add a script "libnm-test-launch.sh" that will handle redirecting the
test via dbus-launch if needed.
2014-08-01 11:55:49 -04:00
Dan Winship
4f7e9bd336 libnm-glib: compile test-networkmanager-service.py path into test binaries
Rather than passing the path to the test service on the command line,
compile it into the test programs.

(Among other things, this makes it easier to run the test directly
from the command line.)
2014-08-01 11:55:49 -04:00
Thomas Haller
0238f8f8e2 libnm-glib: fix warning about redefining typedef RemoteCall
clang warns:

    make[4]: Entering directory `./NetworkManager/libnm-glib'
      CC       libnm_glib_la-nm-remote-connection.lo
    nm-remote-connection.c:77:3: error: redefinition of typedef 'RemoteCall' is a C11 feature [-Werror,-Wtypedef-redefinition]
    } RemoteCall;
      ^
    nm-remote-connection.c:67:27: note: previous definition is here
    typedef struct RemoteCall RemoteCall;
                              ^

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-08-01 13:16:59 +02:00
Thomas Haller
1de6d83e29 libnm-glib/test: add asserts to test-remote-settings-client
- register a weak references and ensure that the connection
  is removed when expected.

- disconnect the vis_new_connection_cb() handler

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-08-01 13:07:38 +02:00
Thomas Haller
d6b3ef0819 libnm-glib/test: fix crash in test-remote-settings-client
test_make_invisible() forgot to disconnect handler invis_removed_cb().
Later, during test_remove_connection(), the connection will be eventually
removed and the callback will corrupt the stack by writing to the '&done'
user data.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-08-01 13:07:38 +02:00
Giovanni Campagna
07046462f7 libnm-glib: disconnect the connectivity check cancellable signal after the call has ended (bgo #733915)
We cannot rely on connectivity data freeing to disconnect the signal,
because the simple async result might be kept alive by external
code (for example the language runtime for JS), but we must not
call dbus_g_proxy_cancel_call() if that cancellable is cancelled or
reused afterwards.

https://bugzilla.gnome.org/show_bug.cgi?id=733915
2014-07-31 20:51:44 -05:00
Dan Winship
5432ef5e52 tools: move libnm-glib's fake NM service implementations here
Move libnm-glib's test-fake-nm.py and test-remote-settings-service.py
to tools/, merge them together into a single program, and fix a few
bugs (notably some missing signal emissions in the Settings service).

Although they are currently only used by libnm-glib's tests, they are
generic enough that they could be used by other code in the future
(and in particular, they will be used by libnm's tests as well).
2014-07-30 15:56:29 -04:00
Thomas Haller
7f35d808f5 libnm-glib: fix gtk-doc for NMClient:active-connections
Since previous commit dafe51e881,
the gtk-doc is no longer ignored. However, the angle brackets
add invalid XML characters to ./docs/libnm-glib/xml/nm-client.xml
This breaks the build.

    make[3]: Entering directory `./NetworkManager/docs/libnm-glib'
      DOC   Scanning header files
      DOC   Introspecting gobjects
      DOC   Building HTML
    ../xml/nm-client.xml:1110: parser error : Opening and ending tag mismatch: NMActiveConnection line 1109 and para
    </para></refsect2>
           ^
    ../xml/nm-client.xml:1110: parser error : Opening and ending tag mismatch: para line 1107 and refsect2
    </para></refsect2>
                      ^
    ../xml/nm-client.xml:1211: parser error : Opening and ending tag mismatch: refsect2 line 1104 and refsect1
    </refsect1>
               ^
    ../xml/nm-client.xml:1262: parser error : Opening and ending tag mismatch: refsect1 line 1095 and refentry
    </refentry>
               ^
    ../xml/nm-client.xml:1263: parser error : Premature end of data in tag refentry line 7

    ^
    ../libnm-glib-docs.xml:67: element include: XInclude error : could not load ../xml/nm-client.xml, and no fallback was found
    make[3]: *** [html-build.stamp] Error 6

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-07-27 04:31:03 +02:00
Dan Winship
dafe51e881 libnm-glib: document some properties
Some libnm-glib object properties were only documented in the
GParamSpec strings, not via gtk-doc comments, so they became
undocumented when the paramspec strings went away. Fix that.

(Also fix incorrect gtk-doc syntax with several NMClient properties.)
2014-07-25 09:49:58 -04:00
Jiří Klimeš
576c82049b libnm-glib: implement nm_device_delete() for D-Bus device' Delete() method 2014-07-22 14:24:42 +02:00
Jiří Klimeš
3dbe8041a7 libnm-glib: add nm_device_is_software() function to NMDevice
It says whether the device is a software one, according to device capabilities.
2014-07-22 14:24:42 +02:00
Thomas Haller
faa6c34db1 libnm-glib: evaluate assert check only once in test-remote-settings-client
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-07-21 12:20:56 +02:00
Dan Winship
396610d14a libnm-glib: fix assertion-failure messages in test-remote-settings-client
test-remote-setting-client uses a macro:

    #define test_assert(condition) \
    do { \
        if (!G_LIKELY (condition)) \
            cleanup (); \
        g_assert (condition); \
    } while (0)

where cleanup() kills the fake remote-settings service and unrefs
settings. However, in many cases, "condition" would involve a test
against a connection that was owned by settings, so if the check
failed, the connection would end up getting freed by cleanup(), and so
then the second invocation of condition would result in the program
aborting on a failed check somewhere else (eg, "invalid unclassed
pointer in cast to 'NMConnection'") rather than displaying the failed
assertion that had gotten us to that point.

Fix this by not unreffing settings from cleanup(); in the normal exit
case we can just have main() unref it, and in the assertion-failed
case, we don't need to free things anyway.
2014-07-20 08:58:56 -04:00
Dan Winship
30c74c6007 build: more srcdir!=builddir fixes
nm-version.h was getting disted, making srcdir!=builddir work for
tarball builds, but not for git builds.

Also, remove "-I${top_builddir}/include" from all Makefile.ams, since
there's nothing generated in include/ any more.
2014-07-15 11:37:19 -04:00