Lines 140-145
public class ModuleManagerTest extends S
Link Here
|
140 |
mgr.mutexPrivileged().enterWriteAccess(); |
140 |
mgr.mutexPrivileged().enterWriteAccess(); |
141 |
try { |
141 |
try { |
142 |
Module m2 = mgr.create(new File(jars, "depends-on-simple-module.jar"), null, false, false, false); |
142 |
Module m2 = mgr.create(new File(jars, "depends-on-simple-module.jar"), null, false, false, false); |
|
|
143 |
Module m1 = mgr.create(new File(jars, "simple-module.jar"), null, false, false, false); |
144 |
assertEquals("org.foo", m1.getCodeNameBase()); |
145 |
assertEquals("org.bar", m2.getCodeNameBase()); |
146 |
assertEquals(Collections.EMPTY_SET, m1.getDependencies()); |
147 |
assertEquals(Dependency.create(Dependency.TYPE_MODULE, "org.foo/1"), m2.getDependencies()); |
148 |
Map<String,Module> modulesByName = new HashMap<String,Module>(); |
149 |
modulesByName.put(m1.getCodeNameBase(), m1); |
150 |
modulesByName.put(m2.getCodeNameBase(), m2); |
151 |
List<Module> m1m2 = Arrays.asList(m1, m2); |
152 |
List<Module> m2m1 = Arrays.asList(m2, m1); |
153 |
Map<Module,List<Module>> deps = Util.moduleDependencies(m1m2, modulesByName, Collections.<String,Set<Module>>emptyMap()); |
154 |
assertNull(deps.get(m1)); |
155 |
assertEquals(Collections.singletonList(m1), deps.get(m2)); |
156 |
assertEquals(m2m1, Utilities.topologicalSort(m1m2, deps)); |
157 |
assertEquals(m2m1, Utilities.topologicalSort(m2m1, deps)); |
158 |
// Leave commented out since it has a (hopefully clean) mutation effect |
159 |
// and could affect results: |
160 |
/* |
161 |
assertEquals(Collections.EMPTY_SET, m1.getProblems()); |
162 |
assertEquals(Collections.EMPTY_SET, m2.getProblems()); |
163 |
*/ |
164 |
Set<Module> m1PlusM2 = new HashSet<Module>(); |
165 |
m1PlusM2.add(m1); |
166 |
m1PlusM2.add(m2); |
167 |
List<Module> toEnable = mgr.simulateEnable(m1PlusM2); |
168 |
assertEquals("correct result of simulateEnable", Arrays.asList(m1, m2), toEnable); |
169 |
mgr.enable(m1PlusM2); |
170 |
assertEquals(Arrays.asList( |
171 |
"prepare", |
172 |
"prepare", |
173 |
"load" |
174 |
), installer.actions); |
175 |
assertEquals(Arrays.asList( |
176 |
m1, |
177 |
m2, |
178 |
Arrays.asList(m1, m2) |
179 |
), installer.args); |
180 |
Class somethingelse = Class.forName("org.bar.SomethingElse", true, m2.getClassLoader()); |
181 |
Method somemethod = somethingelse.getMethod("message"); |
182 |
assertEquals("hello", somemethod.invoke(somethingelse.newInstance())); |
183 |
installer.clear(); |
184 |
List<Module> toDisable = mgr.simulateDisable(Collections.singleton(m1)); |
185 |
assertEquals("correct result of simulateDisable", Arrays.asList(m2, m1), toDisable); |
186 |
toDisable = mgr.simulateDisable(m1PlusM2); |
187 |
assertEquals("correct result of simulateDisable #2", Arrays.asList(m2, m1), toDisable); |
188 |
mgr.disable(m1PlusM2); |
189 |
assertFalse(m1.isEnabled()); |
190 |
assertFalse(m2.isEnabled()); |
191 |
assertEquals(Collections.EMPTY_SET, mgr.getEnabledModules()); |
192 |
assertEquals(m1PlusM2, mgr.getModules()); |
193 |
assertEquals(Arrays.asList( |
194 |
"unload", |
195 |
"dispose", |
196 |
"dispose" |
197 |
), installer.actions); |
198 |
assertEquals(Arrays.asList( |
199 |
Arrays.asList(m2, m1), |
200 |
m2, |
201 |
m1 |
202 |
), installer.args); |
203 |
installer.clear(); |
204 |
mgr.enable(m1); |
205 |
mgr.shutDown(); |
206 |
assertEquals(Arrays.asList( |
207 |
"prepare", |
208 |
"load", |
209 |
"closing", |
210 |
"close" |
211 |
), installer.actions); |
212 |
assertEquals(Arrays.asList( |
213 |
m1, |
214 |
Collections.singletonList(m1), |
215 |
Collections.singletonList(m1), |
216 |
Collections.singletonList(m1) |
217 |
), installer.args); |
218 |
} finally { |
219 |
mgr.mutexPrivileged().exitWriteAccess(); |
220 |
} |
221 |
} |
222 |
|
223 |
/** Load simple-module and depends-on-simple-module. |
224 |
* Make sure they can be installed and in a sane order. |
225 |
* Make sure a class from one can depend on a class from another. |
226 |
* Try to disable them too. |
227 |
*/ |
228 |
public void testSimpleInstallationOfExternalModule() throws Exception { |
229 |
FakeModuleInstaller installer = new FakeModuleInstaller(); |
230 |
FakeEvents ev = new FakeEvents(); |
231 |
ModuleManager mgr = new ModuleManager(installer, ev); |
232 |
mgr.mutexPrivileged().enterWriteAccess(); |
233 |
try { |
234 |
File mf2 = new File(jars, "depends-on-simple-module.mf"); |
235 |
assertTrue("mf2", mf2.exists()); |
236 |
Module m2 = mgr.create(mf2, new File(jars, "depends-on-simple-module-external.jar"), null, false, false, false); |
143 |
Module m1 = mgr.create(new File(jars, "simple-module.jar"), null, false, false, false); |
237 |
Module m1 = mgr.create(new File(jars, "simple-module.jar"), null, false, false, false); |
144 |
assertEquals("org.foo", m1.getCodeNameBase()); |
238 |
assertEquals("org.foo", m1.getCodeNameBase()); |
145 |
assertEquals("org.bar", m2.getCodeNameBase()); |
239 |
assertEquals("org.bar", m2.getCodeNameBase()); |