builder/com.nokia.carbide.cdt.builder.test/src/com/nokia/carbide/cdt/builder/test/SBSv2QueryTests.java
author timkelly
Mon, 11 Oct 2010 11:13:57 -0500
changeset 2145 e374d23468f5
parent 1900 346e4625dacb
permissions -rw-r--r--
Make ssbv2 query tests work against public Symbian^3 beta

/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
* Test the BldInfViewPathHelper class.
*
*/
package com.nokia.carbide.cdt.builder.test;

import java.io.File;
import java.util.List;

import org.osgi.framework.Version;

import com.nokia.carbide.cpp.internal.api.sdk.ISBSv2BuildContext;
import com.nokia.carbide.cpp.internal.api.sdk.sbsv2.SBSv2QueryUtils;
import com.nokia.carbide.cpp.internal.sdk.core.model.AbstractSDKManager;
import com.nokia.carbide.cpp.sdk.core.ISDKBuildInfo;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;

public class SBSv2QueryTests extends BaseTest {
	
	private long startTime;
	
	/** Test SDK - Note that this SDK does not have /epoc32/sbs_config/variant_configs.xml
	 * to test the products. Any working variant_configs.xml can be insterted to get the tests working
	 */
	private final String SDK_ID1 = "Nokia_Symbian3_SDK_v0.9";
	
	@Override
	protected void setUp() throws Exception {
		super.setUp();
		Version sbsVersion = SDKCorePlugin.getSDKManager().getSBSv2Version(true);
		if (sbsVersion.compareTo(AbstractSDKManager.MINIMUM_RAPTOR_VERSION) < 0){
			
			fail("SBS Query tests require Raptor 2.15 or greater. Raptor version found is: " + sbsVersion);
		}
	}
	
	@Override
	protected void tearDown() throws Exception {
		super.tearDown();
	}
	
	
	/**
	 * Query data for a single configuration
	 * @throws Exception
	 */
	public void testQueryBuildConfigsFromSDK() throws Exception {
		
		SBSv2QueryUtils.removeAllCachedQueries();  // ensure sbs needs to build an entirely new cache
		
		ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, true);
		assertNotNull(sdk);
		
		ISDKBuildInfo sbsv2BuildInfo = sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
		assertNotNull(sbsv2BuildInfo);
		
		List<ISymbianBuildContext> buildContexts = sbsv2BuildInfo.getFilteredBuildConfigurations();
		// WINSCW UREL is filtered out from default b/c it does not exist for current test SDK
		assertEquals(5, buildContexts.size());
		
		for (ISymbianBuildContext context : buildContexts){
			assertTrue(context instanceof ISBSv2BuildContext);
			ISBSv2BuildContext sbsv2Context = (ISBSv2BuildContext)context;
			
			assertTrue(sbsv2Context.getVariantHRHDefines().size() > 0);
			if (sbsv2Context.getConfigQueryData().getConfigurationErrorMessage() == null || sbsv2Context.getConfigQueryData().getConfigurationErrorMessage().length() == 0){
				assertTrue((new File(sbsv2Context.getConfigQueryData().getMetaDataVariantHRH())).exists());
			} else {
				System.out.println("Config " + sbsv2Context.getSBSv2Alias() + " had error, cannot fully test: " + sbsv2Context.getConfigQueryData().getConfigurationErrorMessage());
			}
			
			if (sbsv2Context.getConfigQueryData().getConfigurationErrorMessage() == null || 
				sbsv2Context.getConfigQueryData().getConfigurationErrorMessage().length() == 0 ){
				// If there is an error in a configuration we know there won't be any target types
				assertTrue(sbsv2Context.getConfigQueryData().getTargettypes().size() > 0);
			} else {
				assertFalse(sbsv2Context.getConfigQueryData().getTargettypes() == null);
			}
		}
	}
		
	/**
	 * This test should be run on individual %EPOCROOT% values
	 * Products are defined in the SDK
	 * @throws Exception
	 */
	public void testQueryProductsFromSDKs() throws Exception {
		ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDK(SDK_ID1, false);
		assertNotNull("Missing SDK on your system: " + SDK_ID1, sdk);
		List<String> productList = SBSv2QueryUtils.getProductVariantsForSDK(sdk);
		assertTrue(productList.size() > 0);
	}
	
	public String getTimingStats(){
		if (startTime != 0){
			long millisec = (System.currentTimeMillis() - startTime);
			long minutes = millisec / 1000 / 60;
			long seconds = (millisec / 1000) % 60;
			if (minutes > 0){
				return "\nTotal Time: " + minutes + " min, " + seconds + " sec\n";
			} else {
				if (seconds == 1){
					return "\nTotal Time: " + millisec + " msec\n";
				} else {
					return "\nTotal Time: " + seconds + " sec\n";
				}
			}
			
		} else {
			return "";
		}

	}
	
}