Mir

Merge lp:~kdub/mir/refix-1506707 into lp:mir

Proposed by Kevin DuBois
Status: Merged
Approved by: Alberto Aguirre
Approved revision: no longer in the source branch.
Merged at revision: 3210
Proposed branch: lp:~kdub/mir/refix-1506707
Merge into: lp:mir
Diff against target: 182 lines (+64/-11)
5 files modified
src/platforms/mesa/server/kms/platform_symbols.cpp (+28/-3)
src/platforms/mesa/server/x11/graphics/graphics.cpp (+1/-1)
tests/unit-tests/graphics/mesa/kms/test_platform.cpp (+2/-2)
tests/unit-tests/graphics/mesa/x11/test_platform.cpp (+2/-2)
tests/unit-tests/graphics/test_platform_prober.cpp (+31/-3)
To merge this branch: bzr merge lp:~kdub/mir/refix-1506707
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Alan Griffiths Approve
Alberto Aguirre (community) Approve
Review via email: mp+280900@code.launchpad.net

Commit message

fix: lp: #1506707 again after its reversion in lp:mir rev 3198, making sure to avoid regressions (lp: #1526225, lp: #1526505, lp: #1515558, lp: #1526209). Also add a test that would catch changes to this logic in the future (not present in the 0.18 patch)

Description of the change

fix: lp: #1506707 again after its reversion in lp:mir rev 3198, making sure to avoid regressions (lp: #1526225, lp: #1526505, lp: #1515558, lp: #1526209). Also add a test that would catch changes to this logic in the future (not present in the 0.18 patch)

testing notes testing against regressions: http://pastebin.ubuntu.com/14076079/

To post a comment you must log in.
Revision history for this message
Alberto Aguirre (albaguirre) wrote :

16 + auto nested = options.is_set(host_socket);

Nit: could be const.

LGTM.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

FAILED: Continuous integration, rev:3205
http://jenkins.qa.ubuntu.com/job/mir-ci/5876/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-android-vivid-i386-build/5351
    FAILURE: http://jenkins.qa.ubuntu.com/job/mir-clang-vivid-amd64-build/4258/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-vivid-touch/5304
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-xenial-touch/186
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-xenial-amd64-ci/202
        deb: http://jenkins.qa.ubuntu.com/job/mir-xenial-amd64-ci/202/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-xenial-i386-ci/202
        deb: http://jenkins.qa.ubuntu.com/job/mir-xenial-i386-ci/202/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-vivid-armhf/5301
        deb: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-vivid-armhf/5301/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-runner-touch/7811
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26171
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-xenial-armhf/182
        deb: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-xenial-armhf/182/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-runner-xenial-touch/38
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26172

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/mir-ci/5876/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

FAILED: Continuous integration, rev:3206
http://jenkins.qa.ubuntu.com/job/mir-ci/5893/
Executed test runs:
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-android-vivid-i386-build/5375
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-clang-vivid-amd64-build/4282
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-vivid-touch/5328
    FAILURE: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-xenial-touch/210/console
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-xenial-amd64-ci/219
        deb: http://jenkins.qa.ubuntu.com/job/mir-xenial-amd64-ci/219/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-xenial-i386-ci/219
        deb: http://jenkins.qa.ubuntu.com/job/mir-xenial-i386-ci/219/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-vivid-armhf/5325
        deb: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-vivid-armhf/5325/artifact/work/output/*zip*/output.zip
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-runner-touch/7834
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26235
    SUCCESS: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-xenial-armhf/206
        deb: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-builder-xenial-armhf/206/artifact/work/output/*zip*/output.zip
    FAILURE: http://jenkins.qa.ubuntu.com/job/mir-mediumtests-runner-xenial-touch/61/console
    SUCCESS: http://s-jenkins.ubuntu-ci:8080/job/touch-flash-device/26240

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/mir-ci/5893/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

xenial-touch again (krillin-13)

dpkg: error processing archive /var/cache/apt/archives/libboost1.58-dev_1.58.0+dfsg-3.1ubuntu1_armhf.deb (--unpack):
 cannot copy extracted data for './usr/include/boost/phoenix/core/preprocessed/function_equal_10.hpp' to '/usr/include/boost/phoenix/core/preprocessed/function_equal_10.hpp.dpkg-new': failed to write (No space left on device)

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/platforms/mesa/server/kms/platform_symbols.cpp'
2--- src/platforms/mesa/server/kms/platform_symbols.cpp 2015-12-15 20:13:12 +0000
3+++ src/platforms/mesa/server/kms/platform_symbols.cpp 2015-12-18 12:35:49 +0000
4@@ -36,6 +36,7 @@
5 {
6 char const* bypass_option_name{"bypass"};
7 char const* vt_option_name{"vt"};
8+char const* host_socket{"host-socket"};
9
10 struct RealVTFileOperations : public mgm::VTFileOperations
11 {
12@@ -148,6 +149,7 @@
13
14 if (options.is_set(vt_option_name))
15 platform_option_used = true;
16+ auto nested = options.is_set(host_socket);
17
18 auto udev = std::make_shared<mir::udev::Context>();
19
20@@ -156,15 +158,38 @@
21 drm_devices.match_sysname("card[0-9]*");
22 drm_devices.scan_devices();
23
24+ if (drm_devices.begin() == drm_devices.end())
25+ return mg::PlatformPriority::unsupported;
26+
27+ // Check for master
28+ int tmp_fd = -1;
29 for (auto& device : drm_devices)
30 {
31- static_cast<void>(device);
32- if (platform_option_used)
33+ tmp_fd = open(device.devnode(), O_RDWR | O_CLOEXEC);
34+ if (tmp_fd >= 0)
35+ break;
36+ }
37+
38+ if (nested && platform_option_used)
39+ return mg::PlatformPriority::best;
40+ if (nested)
41+ return mg::PlatformPriority::supported;
42+
43+ if (tmp_fd >= 0)
44+ {
45+ if (drmSetMaster(tmp_fd) >= 0)
46+ {
47+ drmDropMaster(tmp_fd);
48+ drmClose(tmp_fd);
49 return mg::PlatformPriority::best;
50+ }
51 else
52- return mg::PlatformPriority::supported;
53+ drmClose(tmp_fd);
54 }
55
56+ if (platform_option_used)
57+ return mg::PlatformPriority::best;
58+
59 return mg::PlatformPriority::unsupported;
60 }
61
62
63=== modified file 'src/platforms/mesa/server/x11/graphics/graphics.cpp'
64--- src/platforms/mesa/server/x11/graphics/graphics.cpp 2015-12-15 20:13:12 +0000
65+++ src/platforms/mesa/server/x11/graphics/graphics.cpp 2015-12-18 12:35:49 +0000
66@@ -91,7 +91,7 @@
67 drm_devices.scan_devices();
68
69 if (drm_devices.begin() != drm_devices.end())
70- return mg::PlatformPriority::best;
71+ return mg::PlatformPriority::supported;
72 }
73 return mg::PlatformPriority::unsupported;
74 }
75
76=== modified file 'tests/unit-tests/graphics/mesa/kms/test_platform.cpp'
77--- tests/unit-tests/graphics/mesa/kms/test_platform.cpp 2015-12-15 20:13:12 +0000
78+++ tests/unit-tests/graphics/mesa/kms/test_platform.cpp 2015-12-18 12:35:49 +0000
79@@ -319,7 +319,7 @@
80 EXPECT_EQ(mg::PlatformPriority::unsupported, probe(options));
81 }
82
83-TEST_F(MesaGraphicsPlatform, probe_returns_supported_when_drm_devices_exist)
84+TEST_F(MesaGraphicsPlatform, probe_returns_best_when_master)
85 {
86 mtf::UdevEnvironment udev_environment;
87 boost::program_options::options_description po;
88@@ -329,7 +329,7 @@
89
90 mir::SharedLibrary platform_lib{mtf::server_platform("graphics-mesa-kms")};
91 auto probe = platform_lib.load_function<mg::PlatformProbe>(probe_platform);
92- EXPECT_EQ(mg::PlatformPriority::supported, probe(options));
93+ EXPECT_EQ(mg::PlatformPriority::best, probe(options));
94 }
95
96 TEST_F(MesaGraphicsPlatform, probe_returns_best_when_drm_devices_vt_option_exist)
97
98=== modified file 'tests/unit-tests/graphics/mesa/x11/test_platform.cpp'
99--- tests/unit-tests/graphics/mesa/x11/test_platform.cpp 2015-12-15 20:13:12 +0000
100+++ tests/unit-tests/graphics/mesa/x11/test_platform.cpp 2015-12-18 12:35:49 +0000
101@@ -116,7 +116,7 @@
102 EXPECT_EQ(mg::PlatformPriority::unsupported, probe(options));
103 }
104
105-TEST_F(X11GraphicsPlatformTest, probe_returns_best_when_drm_render_nodes_exist)
106+TEST_F(X11GraphicsPlatformTest, probe_returns_supported_when_drm_render_nodes_exist)
107 {
108 mtf::UdevEnvironment udev_environment;
109 mir::options::ProgramOption options;
110@@ -125,5 +125,5 @@
111
112 mir::SharedLibrary platform_lib{mtf::server_platform("server-mesa-x11")};
113 auto probe = platform_lib.load_function<mg::PlatformProbe>(probe_platform);
114- EXPECT_EQ(mg::PlatformPriority::best, probe(options));
115+ EXPECT_EQ(mg::PlatformPriority::supported, probe(options));
116 }
117
118=== modified file 'tests/unit-tests/graphics/test_platform_prober.cpp'
119--- tests/unit-tests/graphics/test_platform_prober.cpp 2015-12-15 20:13:12 +0000
120+++ tests/unit-tests/graphics/test_platform_prober.cpp 2015-12-18 12:35:49 +0000
121@@ -121,7 +121,7 @@
122 }
123
124 #ifdef MIR_BUILD_PLATFORM_MESA_KMS
125-TEST(ServerPlatformProbe, LoadsMesaPlatformWhenDrmDevicePresent)
126+TEST_F(ServerPlatformProbeMockDRM, LoadsMesaPlatformWhenDrmMasterCanBeAcquired)
127 {
128 using namespace testing;
129 mir::options::ProgramOption options;
130@@ -138,6 +138,34 @@
131
132 EXPECT_THAT(description->name, HasSubstr("mesa-kms"));
133 }
134+
135+//LP: #1526225, LP: #1526505, LP: #1515558, LP: #1526209
136+TEST_F(ServerPlatformProbeMockDRM, returns_kms_platform_when_nested)
137+{
138+ using namespace testing;
139+ ON_CALL(mock_drm, drmSetMaster(_))
140+ .WillByDefault(Return(-1));
141+
142+ mir::options::ProgramOption options;
143+ boost::program_options::options_description desc("");
144+ desc.add_options()
145+ ("host-socket", boost::program_options::value<std::string>(), "Host socket filename");
146+ std::array<char const*, 3> args {{ "./aserver", "--host-socket", "/dev/null" }};
147+ options.parse_arguments(desc, args.size(), args.data());
148+
149+ auto block_android = ensure_android_probing_fails();
150+ auto block_mesa = ensure_mesa_probing_succeeds();
151+
152+ auto modules = available_platforms();
153+
154+ auto module = mir::graphics::module_for_device(modules, options);
155+ ASSERT_NE(nullptr, module);
156+
157+ auto descriptor = module->load_function<mir::graphics::DescribeModule>(describe_module);
158+ auto description = descriptor();
159+
160+ EXPECT_THAT(description->name, HasSubstr("mesa-kms"));
161+}
162 #endif
163
164 #ifdef MIR_BUILD_PLATFORM_ANDROID
165@@ -192,7 +220,7 @@
166 }
167
168 #if defined(MIR_BUILD_PLATFORM_MESA_KMS) || defined(MIR_BUILD_PLATFORM_MESA_X11) || defined(MIR_BUILD_PLATFORM_ANDROID)
169-TEST(ServerPlatformProbe, LoadsMesaOrAndroidInPreferenceToDummy)
170+TEST_F(ServerPlatformProbeMockDRM, LoadsMesaOrAndroidInPreferenceToDummy)
171 {
172 using namespace testing;
173 mir::options::ProgramOption options;
174@@ -212,7 +240,7 @@
175 }
176 #endif
177
178-TEST(ServerPlatformProbe, IgnoresNonPlatformModules)
179+TEST_F(ServerPlatformProbeMockDRM, IgnoresNonPlatformModules)
180 {
181 using namespace testing;
182 mir::options::ProgramOption options;

Subscribers

People subscribed via source and target branches