Files
sqltoolsservice/test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Program.cs
Aasim Khan cc63d866d7 Fixing integration tests for sts (#1453)
* Fixing test pipeline

* pwd

* fixing script

* fixing cwd

* switch to bash

* Cleaning up script and yml

* Fixing script comment

* Fixing the comments

* Adding issue in the comment

* Adding automatic password generator

* Removing unncesary use statement

* Fixing key

* Printing var

* Printing settings

* Printing var

* Fixed var

* Fixed

* Reverting some changes

* Changing fetch variable to upper case

* Fixing password logic

* Debug

* debug2

* debug

* Making passwords secret

* Fixing string null check

* removed dirs

* fixing var name

* Fixing var

* Printing  vars to see if the enviornment is setup correctly

* Printing versionkey

* removing prints

* Adding 2019 Instance key and updating template

* fixing env variable

* Fixing comment
2022-04-08 15:19:49 -07:00

119 lines
4.3 KiB
C#

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System;
using System.IO;
using System.Xml.Linq;
using Microsoft.SqlTools.ServiceLayer.Test.Common;
using System.Collections.Generic;
namespace Microsoft.SqlTools.ServiceLayer.TestEnvConfig
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 1)
{
string arg = args[0];
if (arg.Equals("-?", StringComparison.OrdinalIgnoreCase) ||
arg.Equals("/?", StringComparison.OrdinalIgnoreCase) ||
arg.Equals("-help", StringComparison.OrdinalIgnoreCase) ||
arg.Equals("/help", StringComparison.OrdinalIgnoreCase))
{
ShowUsage();
}
else if (!File.Exists(arg))
{
Console.WriteLine("setting file {0} does not exist.", arg);
}
else
{
try
{
SaveSettings(arg);
Console.WriteLine("Completed saving the settings");
}
catch (Exception ex)
{
Console.WriteLine("Error encountered: {0}", ex.Message);
}
}
}
else
{
ShowUsage();
}
}
private static void ShowUsage()
{
Console.WriteLine(@"Usage:
TestEnvConfig
Show this help message
TestEnvConfig -?
Show this help message
TestEnvConfig setting_file
Run the program as a command line application
The program reads the test configurations from the setting_file and
saves them locally. the passwords will be stored in the credential store
The following is an example of a setting_file:
<Configuration>
<Instance Name=""defaultSql2005"">
<DataSource>SQL2005 servername</DataSource>
<BackupMethod>RemoteShare</BackupMethod>
<RemoteShare>SQL 2005 remote share</RemoteShare>
</Instance>
<Instance Name=""defaultSql2008"">
<DataSource>SQL2008 servername</DataSource>
<BackupMethod>RemoteShare</BackupMethod>
<RemoteShare>SQL 2008 remote share</RemoteShare>
</Instance>
<Instance Name=""defaultSql2011"">
<DataSource>SQL2011 servername</DataSource>
<BackupMethod>RemoteShare</BackupMethod>
<RemoteShare>SQL 20011 remote share</RemoteShare>
</Instance>
<Instance Name=""defaultSqlAzureV12"">
<DataSource>SQLAzure servername</DataSource>
<BackupMethod>RemoteShare</BackupMethod>
<RemoteShare>SQLAzure remote share</RemoteShare>
<UserId>user id</UserId>
<Password>password</Password>
</Instance>
</Configuration>
");
}
private static void SaveSettings(string settingFile)
{
var xdoc = XDocument.Load(settingFile);
List<InstanceInfo> settings = new List<InstanceInfo>();
foreach (var setting in xdoc.Descendants("Instance"))
{
var passwordEnvVariableValue = Environment.GetEnvironmentVariable((setting.Attribute("VersionKey").Value + "_password"));
settings.Add(new InstanceInfo(setting.Attribute("VersionKey").Value)
{
ServerName = setting.Element("DataSource").Value, // DataSource is required
ConnectTimeoutAsString = (string)setting.Element("ConnectTimeout"), //ConnectTimeout is optional
User = (string)setting.Element("UserId"), // UserID is optional
Password = string.IsNullOrEmpty(passwordEnvVariableValue) ? (string)setting.Element("Password") : passwordEnvVariableValue,
RemoteSharePath = (string)setting.Element("RemoteShare"), // RemoteShare is optional
AuthenticationType = string.IsNullOrEmpty((string)setting.Element("UserId")) ? AuthenticationType.Integrated : AuthenticationType.SqlLogin
});
}
TestConfigPersistenceHelper.Write(settings);
}
}
}