58 private ViewDataCache<IMMPOwnedModel, IMMPModel, IMMPView, IMMPData> viewDataCache; |
58 private ViewDataCache<IMMPOwnedModel, IMMPModel, IMMPView, IMMPData> viewDataCache; |
59 private IModelProvider modelProvider; |
59 private IModelProvider modelProvider; |
60 private File tmpDir; |
60 private File tmpDir; |
61 private File projectDir; |
61 private File projectDir; |
62 |
62 |
|
63 // Try to wait long enough to ensure the timestamp-based check will detect a change |
|
64 private static final long FS_TIME_RESOLUTION = ViewDataCache.ModelFileTimestampCollection.MIN_TIMESTAMP_RESOLUTION; |
|
65 |
63 /* (non-Javadoc) |
66 /* (non-Javadoc) |
64 * @see com.nokia.carbide.cpp.epoc.engine.tests.BaseTest#setUp() |
67 * @see com.nokia.carbide.cpp.epoc.engine.tests.BaseTest#setUp() |
65 */ |
68 */ |
|
69 @SuppressWarnings("unchecked") |
66 protected void setUp() throws Exception { |
70 protected void setUp() throws Exception { |
67 super.setUp(); |
71 super.setUp(); |
68 modelProvider = ModelProviderFactory.createModelProvider(new MMPModelFactory()); |
72 modelProvider = ModelProviderFactory.createModelProvider(new MMPModelFactory()); |
69 viewDataCache = new ViewDataCache<IMMPOwnedModel, IMMPModel, IMMPView, IMMPData>( |
73 viewDataCache = new ViewDataCache<IMMPOwnedModel, IMMPModel, IMMPView, IMMPData>( |
70 modelProvider, 10); |
74 modelProvider, 10); |
121 assertNotNull(data); |
125 assertNotNull(data); |
122 assertEquals(1, data.getSources().size()); |
126 assertEquals(1, data.getSources().size()); |
123 assertEquals(new Path("group/foo.cpp"), data.getSources().get(0)); |
127 assertEquals(new Path("group/foo.cpp"), data.getSources().get(0)); |
124 |
128 |
125 // change foo.mmp on disk |
129 // change foo.mmp on disk |
126 Thread.sleep(50); |
130 Thread.sleep(FS_TIME_RESOLUTION); |
127 makeFile("group/foo.mmp", |
131 makeFile("group/foo.mmp", |
128 "SOURCEPATH .\n"+ |
132 "SOURCEPATH .\n"+ |
129 "SOURCE foo.cpp bar.cpp\n"); |
133 "SOURCE foo.cpp bar.cpp\n"); // note: size changes too |
130 // cache throttles file timestamp checks |
134 // cache throttles file timestamp checks |
131 Thread.sleep(55); |
135 Thread.sleep(FS_TIME_RESOLUTION); |
132 |
136 |
133 IMMPData data2 = viewDataCache.getData(mmpPath, new DefaultMMPViewConfiguration(projectPath)); |
137 IMMPData data2 = viewDataCache.getData(mmpPath, new DefaultMMPViewConfiguration(projectPath)); |
134 assertNotNull(data2); |
138 assertNotNull(data2); |
135 assertNotSame(data, data2); |
139 assertNotSame(data, data2); |
136 assertEquals(2, data2.getSources().size()); |
140 assertEquals(2, data2.getSources().size()); |
152 assertEquals(1, data.getSources().size()); |
156 assertEquals(1, data.getSources().size()); |
153 assertEquals(new Path("group/foo.cpp"), data.getSources().get(0)); |
157 assertEquals(new Path("group/foo.cpp"), data.getSources().get(0)); |
154 assertEquals("0x6000", data.getSingleArgumentSettings().get(EMMPStatement.BASEADDRESS)); |
158 assertEquals("0x6000", data.getSingleArgumentSettings().get(EMMPStatement.BASEADDRESS)); |
155 |
159 |
156 // change foo.mmh on disk |
160 // change foo.mmh on disk |
157 Thread.sleep(5); |
161 Thread.sleep(FS_TIME_RESOLUTION); |
158 makeFile("group/header.mmh", |
162 makeFile("group/header.mmh", |
159 "BASEADDRESS 0x1111"); |
163 "BASEADDRESS 0x1111"); // note: size does not change |
160 |
164 |
161 // cache throttles disk time checks |
165 // cache throttles disk time checks |
162 Thread.sleep(55); |
166 Thread.sleep(FS_TIME_RESOLUTION); |
163 |
167 |
164 IMMPData data2 = viewDataCache.getData(mmpPath, new DefaultMMPViewConfiguration(projectPath)); |
168 IMMPData data2 = viewDataCache.getData(mmpPath, new DefaultMMPViewConfiguration(projectPath)); |
165 assertNotNull(data2); |
169 assertNotNull(data2); |
166 assertNotSame(data, data2); |
170 assertNotSame(data, data2); |
167 assertEquals(1, data2.getSources().size()); |
171 assertEquals(1, data2.getSources().size()); |
352 try { |
356 try { |
353 data = viewDataCache.getData(path, config); |
357 data = viewDataCache.getData(path, config); |
354 data = viewDataCache.getData(path, config); |
358 data = viewDataCache.getData(path, config); |
355 data = viewDataCache.getData(path, config); |
359 data = viewDataCache.getData(path, config); |
356 data = viewDataCache.getData(path, config); |
360 data = viewDataCache.getData(path, config); |
|
361 if (data != null) ; // read to squash warning |
357 } catch (CoreException e) { |
362 } catch (CoreException e) { |
358 throw new RuntimeException(e); |
363 throw new RuntimeException(e); |
359 } |
364 } |
360 } |
365 } |
361 } |
366 } |