summaryrefslogblamecommitdiffstats
path: root/src/test/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicTestUtils.java
blob: 11f8ee6fc809195a17a7027e783a55bb95d60b01 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                       

                               








                                                                            
                                                                                                             












                                                                                                               
                                                                                                                
                                                                                              
 





























                                                                                                                                 
                                                                                            
         

                                                                                                             





                                                                                                      






                                                                                         
         
 








                                                                                                                              








                                                                                                      








                                                                                                              







                                                                                                        
 
package org.openslx.virtualization.configuration.logic;

import static org.junit.jupiter.api.Assertions.fail;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import org.apache.commons.io.FileUtils;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.virtualization.configuration.VirtualizationConfiguration;

public class ConfigurationLogicTestUtils
{
	// @formatter:off
	public static final List<OperatingSystem> STUB_OS_LIST = Collections.unmodifiableList( Arrays.asList(
			new OperatingSystem(  1, "Windows 7 (64 Bit)",        null, "AMD64", 196608, 256 ),
			new OperatingSystem(  2, "Windows 8 (32 Bit)",        null, "x86",     4096,  32 ),
			new OperatingSystem(  3, "Windows 8 (64 Bit)",        null, "AMD64", 131072, 256 ),
			new OperatingSystem(  4, "Ubuntu (32 Bit)",           null, "x86",        0,   0 ),
			new OperatingSystem(  5, "Ubuntu (64 Bit)",           null, "AMD64",      0,   0 ),
			new OperatingSystem(  6, "OpenSUSE (32 Bit)",         null, "x86",        0,   0 ),
			new OperatingSystem(  7, "OpenSUSE (64 Bit)",         null, "AMD64",      0,   0 ),
			new OperatingSystem(  8, "Other Linux (32 Bit)",      null, "x86",        0,   0 ),
			new OperatingSystem(  9, "Other Linux (64 Bit)",      null, "AMD64",      0,   0 ),
			new OperatingSystem( 10, "Windows 7 (32 Bit)",        null, "x86",     4096,  32 ),
			new OperatingSystem( 11, "Windows 2000 Professional", null, "x86",     4096,   4 ) ) );
	// @formatter:on

	private static final String REGEX_UUID = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
	private static final String REGEX_SOURCE_FILE_PATHS = "(<source.*file=\")(.*)(\".*>)";

	public static VirtualizationConfiguration<?, ?, ?, ?> newVirtualizationConfigurationInstance( File configFile )
	{
		VirtualizationConfiguration<?, ?, ?, ?> config = null;

		try {
			config = VirtualizationConfiguration.getInstance( ConfigurationLogicTestUtils.STUB_OS_LIST, configFile );
		} catch ( IOException e ) {
			fail( "Virtualization configuration file '" + configFile.getName() + "' can not be processed!" );
		}

		if ( config == null ) {
			fail( "Virtualization configuration can not be created from file '" + configFile.getName() + "'" );
		}

		return config;
	}

	public static String readFileToString( File file )
	{
		String content = null;

		try {
			content = FileUtils.readFileToString( file, StandardCharsets.UTF_8 );
		} catch ( IOException e ) {
			fail( "Could not read content of file '" + file.getName() + "'" );
		}

		return content;
	}

	public static boolean isContentEqual( String expectedContent, String actualContent )
	{
		final BufferedReader bfrContent1 = new BufferedReader( new StringReader( expectedContent ) );
		final BufferedReader bfrContent2 = new BufferedReader( new StringReader( actualContent ) );
		final List<String> linesContent1 = bfrContent1.lines().collect( Collectors.toList() );
		final List<String> linesContent2 = bfrContent2.lines().collect( Collectors.toList() );

		Collections.sort( linesContent1 );
		Collections.sort( linesContent2 );

		boolean ret = linesContent1.equals( linesContent2 );
		if ( !ret ) {
			System.out.println( "----- UNEXPECTED OUTPUT: -------------\n" );
			System.out.println( actualContent );
			System.out.println( "--------------------------------------\n" );
		}
		return ret;
	}

	public static String removeSourceFilePaths( String content )
	{
		final Pattern patternSourceFilePaths = Pattern.compile( ConfigurationLogicTestUtils.REGEX_SOURCE_FILE_PATHS );
		final Matcher matcherSourceFilePathsContent = patternSourceFilePaths.matcher( content );

		// replace all source file paths with the empty String
		return matcherSourceFilePathsContent.replaceAll( "$1$3" );
	}

	public static String removeUuid( String content )
	{
		final Pattern patternUuid = Pattern.compile( ConfigurationLogicTestUtils.REGEX_UUID );
		final Matcher matcherUuidContent = patternUuid.matcher( content );

		// replace all UUIDs with the empty String
		return matcherUuidContent.replaceAll( "" );
	}

	public static boolean isLibvirtContentEqual( String content1, String content2 )
	{
		// replace all source file paths with the empty String
		final String filteredContent1 = ConfigurationLogicTestUtils.removeSourceFilePaths( content1 );
		final String filteredContent2 = ConfigurationLogicTestUtils.removeSourceFilePaths( content2 );

		return ConfigurationLogicTestUtils.isContentEqual( filteredContent1, filteredContent2 );
	}

	public static boolean isVirtualBoxContentEqual( String content1, String content2 )
	{
		// replace all UUIDs with the empty String
		final String filteredContent1 = ConfigurationLogicTestUtils.removeUuid( content1 );
		final String filteredContent2 = ConfigurationLogicTestUtils.removeUuid( content2 );

		return ConfigurationLogicTestUtils.isContentEqual( filteredContent1, filteredContent2 );
	}
}