project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestViewDataCache.java
changeset 610 bfb3ab3f70f2
parent 0 fb279309251b
child 634 baa31ffa93b5
equal deleted inserted replaced
609:bf7dbec89c47 610:bfb3ab3f70f2
    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 	}