216
215
g_variant_new_string("untrusted-type:24034582324132:com.bar_foo_8432.13.1"),
219
/* Create the cgroup manager mock */
220
cgmock = dbus_test_dbus_mock_new("org.test.cgmock");
221
g_setenv("UBUNTU_APP_LAUNCH_CG_MANAGER_NAME", "org.test.cgmock", TRUE);
223
DbusTestDbusMockObject * cgobject = dbus_test_dbus_mock_get_object(cgmock, "/org/linuxcontainers/cgmanager", "org.linuxcontainers.cgmanager0_0", NULL);
224
dbus_test_dbus_mock_object_add_method(cgmock, cgobject,
226
G_VARIANT_TYPE("(ss)"),
227
G_VARIANT_TYPE("ai"),
228
"ret = [100, 200, 300]",
231
218
/* Put it together */
232
219
dbus_test_service_add_task(service, DBUS_TEST_TASK(mock));
233
dbus_test_service_add_task(service, DBUS_TEST_TASK(cgmock));
234
220
dbus_test_service_start_tasks(service);
236
222
bus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, NULL);
237
223
g_dbus_connection_set_exit_on_close(bus, FALSE);
238
224
g_object_add_weak_pointer(G_OBJECT(bus), (gpointer *)&bus);
240
/* Make sure we pretend the CG manager is just on our bus */
241
g_setenv("UBUNTU_APP_LAUNCH_CG_MANAGER_SESSION_BUS", "YES", TRUE);
243
226
ASSERT_TRUE(ubuntu_app_launch_observer_add_app_focus(focus_cb, this));
244
227
ASSERT_TRUE(ubuntu_app_launch_observer_add_app_resume(resume_cb, this));
422
404
TEST_F(LibUAL, ApplicationPid)
424
/* Check bad params */
425
EXPECT_EQ(0, ubuntu_app_launch_get_primary_pid(NULL));
426
EXPECT_FALSE(ubuntu_app_launch_pid_in_app_id(0, "foo"));
427
EXPECT_FALSE(ubuntu_app_launch_pid_in_app_id(100, NULL));
429
/* Check primary pid, which comes from Upstart */
430
406
EXPECT_EQ(ubuntu_app_launch_get_primary_pid("foo"), getpid());
431
407
EXPECT_EQ(ubuntu_app_launch_get_primary_pid("bar"), 5678);
433
/* Look at the full PID list from CG Manager */
434
DbusTestDbusMockObject * cgobject = dbus_test_dbus_mock_get_object(cgmock, "/org/linuxcontainers/cgmanager", "org.linuxcontainers.cgmanager0_0", NULL);
435
const DbusTestDbusMockCall * calls = NULL;
438
/* Click in the set */
439
EXPECT_TRUE(ubuntu_app_launch_pid_in_app_id(100, "foo"));
440
calls = dbus_test_dbus_mock_object_get_method_calls(cgmock, cgobject, "GetTasks", &len, NULL);
442
EXPECT_STREQ("GetTasks", calls->name);
443
EXPECT_TRUE(g_variant_equal(calls->params, g_variant_new("(ss)", "freezer", "upstart/application-click-foo")));
444
ASSERT_TRUE(dbus_test_dbus_mock_object_clear_method_calls(cgmock, cgobject, NULL));
446
/* Click out of the set */
447
EXPECT_FALSE(ubuntu_app_launch_pid_in_app_id(101, "foo"));
448
calls = dbus_test_dbus_mock_object_get_method_calls(cgmock, cgobject, "GetTasks", &len, NULL);
450
EXPECT_STREQ("GetTasks", calls->name);
451
EXPECT_TRUE(g_variant_equal(calls->params, g_variant_new("(ss)", "freezer", "upstart/application-click-foo")));
452
ASSERT_TRUE(dbus_test_dbus_mock_object_clear_method_calls(cgmock, cgobject, NULL));
454
/* Legacy Single Instance */
455
EXPECT_TRUE(ubuntu_app_launch_pid_in_app_id(100, "single"));
456
calls = dbus_test_dbus_mock_object_get_method_calls(cgmock, cgobject, "GetTasks", &len, NULL);
458
EXPECT_STREQ("GetTasks", calls->name);
459
EXPECT_TRUE(g_variant_equal(calls->params, g_variant_new("(ss)", "freezer", "upstart/application-legacy-single-")));
460
ASSERT_TRUE(dbus_test_dbus_mock_object_clear_method_calls(cgmock, cgobject, NULL));
462
/* Legacy Multi Instance */
463
EXPECT_TRUE(ubuntu_app_launch_pid_in_app_id(100, "bar"));
464
calls = dbus_test_dbus_mock_object_get_method_calls(cgmock, cgobject, "GetTasks", &len, NULL);
466
EXPECT_STREQ("GetTasks", calls->name);
467
EXPECT_TRUE(g_variant_equal(calls->params, g_variant_new("(ss)", "freezer", "upstart/application-legacy-bar-2342345")));
468
ASSERT_TRUE(dbus_test_dbus_mock_object_clear_method_calls(cgmock, cgobject, NULL));
408
EXPECT_TRUE(ubuntu_app_launch_pid_in_app_id(getpid(), "foo"));
409
EXPECT_FALSE(ubuntu_app_launch_pid_in_app_id(5678, "foo"));
472
412
TEST_F(LibUAL, ApplicationId)