[InlineData("/runId=10", "/runId = 10")] // doc bug!
        public void TestValidArguments(string arg1, string arg2)
        {
            string[] args           = new string[] { arg1, arg2 };
            CommandLineDictionary d = CommandLineDictionary.FromArguments(args);

            Assert.Equal <int>(2, d.Count);
        }
        /* replaces the values in the string content
double experiment(7,1)
       0                   # StartTime    Time at which integration starts
                           #              (and linearization and trimming time)
       1                   # StopTime     Time at which integration stops
       0                   # Increment    Communication step size, if > 0
     100                   # nInterval    Number of communication intervals, if > 0

         */
        //change the DS file parameter values

        public static void ParseSimulationFile(string filename, CommandLineDictionary d, HashSet<string> dsParameters)
        {
            var reader = new StreamReader(filename);
            string content = reader.ReadToEnd();
            reader.Close();
            foreach (var key in d.Keys)
            {
                if (dsParameters.Contains(key))
                {
                    string value;
                    if (d.TryGetValue(key, out value)) ReplaceDS(value, ref content, key);
                }
                else
                {
                    string value;
                    if (d.TryGetValue(key, out value)) ReplaceVariableDS(value, ref content, key);
                }

            }
            //            ReplaceDS(s, ref content, "StartTime");
            //            ReplaceDS(s1, ref content, "StopTime");
            //            ReplaceDS(s2, ref content, "nInterval");
            var writer = new StreamWriter(filename);
            writer.Write(content);
            writer.Close();

        }
Exemple #3
0
        public static CommandLineArguments Init(string[] args)
        {
            CommandLineDictionary d = CommandLineDictionary.FromArguments(args);

            if (d == null || d.ContainsKey("?") || d.ContainsKey("help"))
            {
                return(null);
            }

            CommandLineArguments a = new CommandLineArguments();

            a.ParseArguments(args);

            if (a.Interval == null)
            {
                return(null);
            }

            if (a.Pid == null && a.ProcessName == null)
            {
                return(null);
            }

            return(a);
        }
 public void TestDuplicatedArguments(string arg1, string arg2)
 {
     string[] args = new string[] { arg1, arg2 };
     Assert.Throws <ArgumentException>(
         delegate
     {
         CommandLineDictionary d = CommandLineDictionary.FromArguments(args);
     });
 }
        public void TestCommonUsageWithCustomKeyAndValueCharacters()
        {
            string[] args = new string[] { "-verbose", "-runid:10" };

            CommandLineDictionary d = CommandLineDictionary.FromArguments(args, '-', ':');

            Assert.True(d.ContainsKey("verbose"));
            Assert.True(d.ContainsKey("runid"));
            Assert.Equal <int>(10, Int32.Parse(d["runid"], CultureInfo.InvariantCulture));
            Assert.Equal <string>("-verbose -runid:10", d.ToString()); // bug!
            Assert.Equal <int>(2, d.Count);
        }
        public void TestCommonUsage()
        {
            string[] args = new string[] { "/verbose", "/runid=10" };

            CommandLineDictionary d = CommandLineDictionary.FromArguments(args);

            Assert.True(d.ContainsKey("verbose"));
            Assert.True(d.ContainsKey("runid"));
            Assert.Equal <int>(10, Int32.Parse(d["runid"], CultureInfo.InvariantCulture));
            Assert.Equal <string>("/verbose /runid=10", d.ToString());
            Assert.Equal <int>(2, d.Count);
        }
Exemple #7
0
        private static bool ValidateOptions(CommandLineDictionary cmd)
        {
            bool isValid = true;

            if (!(cmd.ContainsKey("url") &&
                  cmd.ContainsKey("user") &&
                  cmd.ContainsKey("password") &&
                  cmd.ContainsKey("project") &&
                  cmd.Count == 4))
            {
                isValid = false;
            }
            return(isValid);
        }
Exemple #8
0
        /// <summary>
        /// Provides an entry point for Crash Reporting tool.
        /// </summary>
        public static int Main(string[] args)
        {
            try
            {
                CommandLineDictionary dictionary = CommandLineDictionary.FromArguments(args);
                int pid = int.Parse(dictionary["PID"], CultureInfo.InvariantCulture);
                ReportCrash(pid);
            }
            //This process must not crash in event of failure
            //otherwise we risk recursive crashing sequence which could get ugly.
            catch (Exception e)
            {
                Log(e.ToString());
            }

            return(0);
        }
Exemple #9
0
        public static void Main(String[] args)
        {
            CommandLineDictionary dictionary = CommandLineParser.Parse(args, new String[] { "activeProfile", "serverKey" });

            if (dictionary.ContainsKey("activeProfile") && dictionary.ContainsKey("serverKey"))
            {
                throw new ArgumentException("You cannot define 'activeProfile' and 'serverKey' at the same time");
            }
            try
            {
                new CoreApplication(ServerConfiguration.ReadServerInstances(dictionary)).Run();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
Exemple #10
0
        static int Main(string[] args)
        {
            _args = new Arguments();
            try
            {
                CommandLineDictionary cmdlineDict = CommandLineDictionary.FromArguments(args, '-', ':');

                _args.ParseArguments(args, cmdlineDict);
            }
            catch (Exception e)
            {
                return Usage("Oops. Something bad happened with the parameters that you gave me.\n\n" + e.Message);
            }

            if (_args.Usage)
                return Usage();

            if (string.IsNullOrEmpty(_args.Target))
                return Usage("Must specify a target to connect to. Use: [emulator|xde]/[device|phone]");

            if (string.IsNullOrEmpty(_args.App) && string.IsNullOrEmpty(_args.Xap))
                return Usage("Must specify one of either -app or -xap");

            if (!string.IsNullOrEmpty(_args.App) && !string.IsNullOrEmpty(_args.Xap))
                return Usage("Confused me, you have. Should I use -app or -xap?");

            if (!_args.Install && !_args.Update && !_args.Launch && !_args.UnInstall && string.IsNullOrEmpty(_args.Get) && string.IsNullOrEmpty(_args.Put))
                return Usage("Yawn. You haven't asked me to install, update or launch the app, so what do you want me to do?");

            int rv = 0;

            try
            {
                rv = DoWork();
            }
            catch (ConsoleMessageException e)
            {
                System.Console.Error.WriteLine(e.Message);
                rv = 1;
            }

            return rv;
        }
Exemple #11
0
        //- ~Parse -//
        internal static CommandLineDictionary Parse(String[] args, String[] allowedArguments)
        {
            CommandLineDictionary dictionary = new CommandLineDictionary();
            List <String>         arguments  = new List <String>(args);

            foreach (var arg in arguments)
            {
                String[] parts = arg.Split(':');
                if (parts.Length == 2)
                {
                    String parameter = parts[0].Replace("-", "").Trim();
                    String value     = parts[1].Replace("\"", "").Trim();
                    if (allowedArguments.Count(p => p == parameter) == 0)
                    {
                        continue;
                    }
                    dictionary.Add(parameter, value);
                }
            }
            return(dictionary);
        }
Exemple #12
0
        /// <summary>
        /// Login to the RQM server and perform some OSLC actions
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            CommandLineDictionary cmd = CommandLineDictionary.FromArguments(args);

            if (!ValidateOptions(cmd))
            {
                logger.Error("Syntax:  /url=https://<server>:port/<context>/ /user=<user> /password=<password> /project=\"<project_area>\"");
                logger.Error("Example: /url=https://exmple.com:9443/qm /user=ADMIN /password=ADMIN /project=\"JKE Banking (Quality Management)\"");
                return;
            }

            String webContextUrl = cmd["url"];
            String user          = cmd["user"];
            String passwd        = cmd["password"];
            String projectArea   = cmd["project"];

            try {
                //STEP 1: Initialize a Jazz rootservices helper and indicate we're looking for the QualityManagement catalog
                //RQM contains both Quality and Change Management providers, so need to look for QM specifically
                JazzRootServicesHelper helper = new JazzRootServicesHelper(webContextUrl, OSLCConstants.OSLC_QM_V2);

                //STEP 2: Create a new Form Auth client with the supplied user/password
                JazzFormAuthClient client = helper.InitFormClient(user, passwd);

                //STEP 3: Login in to Jazz Server
                if (client.FormLogin() == HttpStatusCode.OK)
                {
                    //STEP 4: Get the URL of the OSLC QualityManagement catalog
                    String catalogUrl = helper.GetCatalogUrl();

                    //STEP 5: Find the OSLC Service Provider for the project area we want to work with
                    String serviceProviderUrl = client.LookupServiceProviderUrl(catalogUrl, projectArea);

                    //STEP 6: Get the Query Capabilities URL so that we can run some OSLC queries
                    String queryCapability = client.LookupQueryCapability(serviceProviderUrl,
                                                                          OSLCConstants.OSLC_QM_V2,
                                                                          OSLCConstants.QM_TEST_RESULT_QUERY);

                    //SCENARIO A: Run a query for all TestResults with a status of passed with OSLC paging of 10 items per
                    //page turned on and list the members of the result
                    OslcQueryParameters queryParams = new OslcQueryParameters();
                    queryParams.SetWhere("oslc_qm:status=\"com.ibm.rqm.execution.common.state.passed\"");
                    OslcQuery query = new OslcQuery(client, queryCapability, 10, queryParams);

                    OslcQueryResult result = query.Submit();

                    bool processAsDotNetObjects = true;
                    ProcessPagedQueryResults(result, client, processAsDotNetObjects);

                    Console.WriteLine("\n------------------------------\n");

                    //SCENARIO B:  Run a query for a specific TestResult selecting only certain
                    //attributes and then print it as raw XML.  Change the dcterms:title below to match a
                    //real TestResult in your RQM project area
                    OslcQueryParameters queryParams2 = new OslcQueryParameters();
                    queryParams2.SetWhere("dcterms:title=\"Consistent_display_of_currency_Firefox_DB2_WAS_Windows_S1\"");
                    queryParams2.SetSelect("dcterms:identifier,dcterms:title,dcterms:creator,dcterms:created,oslc_qm:status");
                    OslcQuery query2 = new OslcQuery(client, queryCapability, queryParams2);

                    OslcQueryResult     result2     = query2.Submit();
                    HttpResponseMessage rawResponse = result2.GetRawResponse();
                    ProcessRawResponse(rawResponse);
                    rawResponse.ConsumeContent();

                    //SCENARIO C:  RQM TestCase creation and update
                    TestCase testcase = new TestCase();
                    testcase.SetTitle("Accessibility verification using a screen reader");
                    testcase.SetDescription("This test case uses a screen reader application to ensure that the web browser content fully complies with accessibility standards");
                    testcase.AddTestsChangeRequest(new Link(new Uri("http://cmprovider/changerequest/1"), "Implement accessibility in Pet Store application"));

                    //Get the Creation Factory URL for test cases so that we can create a test case
                    String testcaseCreation = client.LookupCreationFactory(
                        serviceProviderUrl, OSLCConstants.OSLC_QM_V2,
                        testcase.GetRdfTypes()[0].ToString());

                    //Create the test case
                    HttpResponseMessage creationResponse = client.CreateResource(
                        testcaseCreation, testcase,
                        OslcMediaType.APPLICATION_RDF_XML);
                    creationResponse.ConsumeContent();
                    String testcaseLocation = creationResponse.Headers.Location.ToString();
                    Console.WriteLine("Test Case created a location " + testcaseLocation);

                    //Get the test case from the service provider and update its title property
                    testcase = client.GetResource(testcaseLocation,
                                                  OslcMediaType.APPLICATION_RDF_XML).Content.ReadAsAsync <TestCase>(client.GetFormatters()).Result;
                    testcase.SetTitle(testcase.GetTitle() + " (updated)");

                    //Create a partial update URL so that only the title will be updated.
                    //Assuming (for readability) that the test case URL does not already contain a '?'
                    String updateUrl = testcase.GetAbout() + "?oslc.properties=dcterms:title";

                    //Update the test case at the service provider
                    client.UpdateResource(updateUrl, testcase,
                                          OslcMediaType.APPLICATION_RDF_XML).ConsumeContent();
                }
            } catch (RootServicesException re) {
                logger.Error("Unable to access the Jazz rootservices document at: " + webContextUrl + "/rootservices", re);
            } catch (Exception e) {
                logger.Error(e.Message, e);
            }
        }
Exemple #13
0
        public static void Main()
        {
            string productName             = "Daisy_Tobi";
            string tobiAppRefProviderToken = "TobiAppRefProvider";

            bool firstInstance;
            var  theMutex = new Mutex(false, "Local\\" + productName, out firstInstance);

            try
            {
                string[] appParamters = null;

                bool clickOnce = ApplicationDeployment.IsNetworkDeployed;
                if (clickOnce)
                {
                    appParamters = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
                }
                else
                {
                    appParamters = Environment.GetCommandLineArgs();
                }
                bool hasParameters = appParamters != null &&
                                     (clickOnce ? appParamters.Length > 0
                                     : appParamters.Length > 1);

                string filePath = "";

                if (hasParameters)
                {
                    if (clickOnce)
                    {
                        try
                        {
                            filePath = new Uri(appParamters[0]).LocalPath;
                        }
                        catch
                        {
                            filePath = "";
                            MessageBox.Show("CANNOT PARSE URI: " + appParamters[0]);
                        }
                    }
                    else
                    {
                        try
                        {
                            //Tobi.exe /verbose /debuglevel=3
                            var dict = CommandLineDictionary.FromArguments(appParamters.Skip(1), '/', '=');

                            //bool verbose = d.ContainsKey("verbose");
                            //int testId = Int32.Parse(d["debuglevel"]);

                            string open;
                            dict.TryGetValue("open", out open);

                            if (!string.IsNullOrEmpty(open))
                            {
                                filePath = open;
                            }
                        }
                        catch
                        {
                            filePath = appParamters[1];
                        }
                    }
                }

                if (firstInstance)
                {
                    IChannel theChannel = new System.Runtime.Remoting.Channels.Ipc.IpcChannel(productName);
                    try
                    {
                        ChannelServices.RegisterChannel(theChannel, false);

                        var app = new App();
                        app.InitializeComponent();

                        DebugFix.Assert(app == Application.Current);

                        RemotingServices.Marshal(new AppRefProvider(app
                                                                    //, app.Dispatcher
                                                                    ), tobiAppRefProviderToken, typeof(AppRefProvider));

                        if (!string.IsNullOrEmpty(filePath))
                        {
                            app.ParameterOpenFilePath = filePath;
                        }

                        app.Run();
                    }
                    catch (SocketException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    finally
                    {
                        ChannelServices.UnregisterChannel(theChannel);
                    }
                }
                else
                {
                    if (
#if DEBUG
                        true ||
#endif //DEBUG
                        !string.IsNullOrEmpty(filePath))
                    {
#if DEBUG
                        MessageBox.Show("DEBUG: Tobi instance already running >> " + filePath);
#endif //DEBUG

                        try
                        {
                            AppRefProvider appRefProvider =
                                (AppRefProvider)RemotingServices.Connect(
                                    typeof(AppRefProvider),
                                    "ipc://" + productName + "/" + tobiAppRefProviderToken);

                            appRefProvider.TryOpenFile(filePath);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                }
            }
            finally
            {
                theMutex.Close();
            }
        }
Exemple #14
0
        /// <summary>
        /// Login to the RTC server and perform some OSLC actions
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            CommandLineDictionary cmd = CommandLineDictionary.FromArguments(args);

            if (!ValidateOptions(cmd))
            {
                logger.Error("Syntax:  /url=https://<server>:port/<context>/ /user=<user> /password=<password> /project=\"<project_area>\"");
                logger.Error("Example: /url=https://exmple.com:9443/ccm /user=ADMIN /password=ADMIN /project=\"JKE Banking (Change Management)\"");
                return;
            }

            String webContextUrl = cmd["url"];
            String user          = cmd["user"];
            String passwd        = cmd["password"];
            String projectArea   = cmd["project"];

            try {
                //STEP 1: Initialize a Jazz rootservices helper and indicate we're looking for the ChangeManagement catalog
                //RTC contains a service provider for CM and SCM, so we need to indicate our interest in CM
                JazzRootServicesHelper helper = new JazzRootServicesHelper(webContextUrl, OSLCConstants.OSLC_CM_V2);

                //STEP 2: Create a new Form Auth client with the supplied user/password
                JazzFormAuthClient client = helper.InitFormClient(user, passwd);

                //STEP 3: Login in to Jazz Server
                if (client.FormLogin() == HttpStatusCode.OK)
                {
                    //STEP 4: Get the URL of the OSLC ChangeManagement catalog
                    String catalogUrl = helper.GetCatalogUrl();

                    //STEP 5: Find the OSLC Service Provider for the project area we want to work with
                    String serviceProviderUrl = client.LookupServiceProviderUrl(catalogUrl, projectArea);

                    //STEP 6: Get the Query Capabilities URL so that we can run some OSLC queries
                    String queryCapability = client.LookupQueryCapability(serviceProviderUrl,
                                                                          OSLCConstants.OSLC_CM_V2,
                                                                          OSLCConstants.CM_CHANGE_REQUEST_TYPE);

                    //SCENARIO A: Run a query for all open ChangeRequests with OSLC paging of 10 items per
                    //page turned on and list the members of the result
                    OslcQueryParameters queryParams = new OslcQueryParameters();
                    queryParams.SetWhere("oslc_cm:closed=false");
                    queryParams.SetSelect("dcterms:identifier,dcterms:title,oslc_cm:status");
                    OslcQuery query = new OslcQuery(client, queryCapability, 10, queryParams);

                    OslcQueryResult result = query.Submit();

                    bool processAsJavaObjects = true;
                    ProcessPagedQueryResults(result, client, processAsJavaObjects);

                    Console.WriteLine("\n------------------------------\n");

                    //SCENARIO B:  Run a query for a specific ChangeRequest selecting only certain
                    //attributes and then print it as raw XML.  Change the dcterms:identifier below to match a
                    //real workitem in your RTC project area
                    OslcQueryParameters queryParams2 = new OslcQueryParameters();
                    queryParams2.SetWhere("dcterms:identifier=\"10\"");
                    queryParams2.SetSelect("dcterms:identifier,dcterms:title,dcterms:creator,dcterms:created,oslc_cm:status");
                    OslcQuery query2 = new OslcQuery(client, queryCapability, queryParams2);

                    OslcQueryResult     result2     = query2.Submit();
                    HttpResponseMessage rawResponse = result2.GetRawResponse();
                    ProcessRawResponse(rawResponse);
                    rawResponse.ConsumeContent();

                    //SCENARIO C:  RTC Workitem creation and update
                    ChangeRequest changeRequest = new ChangeRequest();
                    changeRequest.SetTitle("Implement accessibility in Pet Store application");
                    changeRequest.SetDescription("Image elements must provide a description in the 'alt' attribute for consumption by screen readers.");
                    changeRequest.AddTestedByTestCase(new Link(new Uri("http://qmprovider/testcase/1"), "Accessibility verification using a screen reader"));
                    changeRequest.AddDctermsType("task");

                    //Get the Creation Factory URL for change requests so that we can create one
                    String changeRequestCreation = client.LookupCreationFactory(
                        serviceProviderUrl, OSLCConstants.OSLC_CM_V2,
                        changeRequest.GetRdfTypes()[0].ToString());

                    //Create the change request
                    HttpResponseMessage creationResponse = client.CreateResource(
                        changeRequestCreation, changeRequest,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);

                    if (creationResponse.StatusCode != HttpStatusCode.Created)
                    {
                        String errorString = creationResponse.Content.ReadAsStringAsync().Result;
                        Console.Error.WriteLine("Failed to create change request: " + errorString);
                        return;
                    }

                    String changeRequestLocation = creationResponse.Headers.Location.ToString();
                    creationResponse.ConsumeContent();
                    Console.WriteLine("Change Request created a location " + changeRequestLocation);


                    //Get the change request from the service provider and update its title property
                    changeRequest = client.GetResource(changeRequestLocation,
                                                       OslcMediaType.APPLICATION_RDF_XML).Content.ReadAsAsync <ChangeRequest>(client.GetFormatters()).Result;
                    changeRequest.SetTitle(changeRequest.GetTitle() + " (updated)");

                    //Create a partial update URL so that only the title will be updated.
                    //Assuming (for readability) that the change request URL does not already contain a '?'
                    String updateUrl = changeRequest.GetAbout() + "?oslc.properties=dcterms:title";

                    //Update the change request at the service provider
                    HttpResponseMessage updateResponse = client.UpdateResource(
                        updateUrl, changeRequest,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);

                    updateResponse.ConsumeContent();
                }
            } catch (RootServicesException re) {
                logger.Error("Unable to access the Jazz rootservices document at: " + webContextUrl + "/rootservices", re);
            } catch (Exception e) {
                logger.Error(e.Message, e);
            }
        }
Exemple #15
0
 public void SetUp()
 {
     instance = CreateCommandLineDictionary();
 }
        //- ~ReadServerInstances -//
        internal static List <Instance> ReadServerInstances(CommandLineDictionary dictionary)
        {
            List <Instance> instances        = new List <Instance>();
            DevServerConfigurationSection cs = DevServerConfigurationFacade.GetWebDevServerConfiguration();
            //+
            List <String> types = new List <String>();

            for (int i = 0; i < cs.RequestTracing.AllowedContentTypes.Count; i++)
            {
                types.Add(cs.RequestTracing.AllowedContentTypes[i].Value);
            }
            //+ default documents
            List <String> documents = new List <String>(new String[] { "default.aspx", "default.htm", "default.html" });

            for (int i = 0; i < cs.WebServer.DefaultDocuments.Count; i++)
            {
                if (!documents.Contains(cs.WebServer.DefaultDocuments[i].Name))
                {
                    documents.Add(cs.WebServer.DefaultDocuments[i].Name);
                }
            }
            //+ content type mappings
            Dictionary <String, String> contentTypeMappings = new Dictionary <String, String>();

            contentTypeMappings.Add(".bmp", "image/bmp");
            contentTypeMappings.Add(".css", "text/css");
            contentTypeMappings.Add(".gif", "image/gif");
            contentTypeMappings.Add(".ico", "image/x-icon");
            contentTypeMappings.Add(".htm", "text/html");
            contentTypeMappings.Add(".html", "text/html");
            contentTypeMappings.Add(".jpe", "image/jpeg");
            contentTypeMappings.Add(".jpeg", "image/jpeg");
            contentTypeMappings.Add(".jpg", "image/jpeg");
            contentTypeMappings.Add(".js", "text/javascript");
            for (int i = 0; i < cs.WebServer.ContentTypeMappings.Count; i++)
            {
                if (!contentTypeMappings.ContainsKey(cs.WebServer.ContentTypeMappings[i].Extension))
                {
                    contentTypeMappings.Add(cs.WebServer.ContentTypeMappings[i].Extension, cs.WebServer.ContentTypeMappings[i].Type);
                }
                else if (cs.WebServer.ContentTypeMappings[i].Override)
                {
                    contentTypeMappings.Remove(cs.WebServer.ContentTypeMappings[i].Extension);
                    contentTypeMappings.Add(cs.WebServer.ContentTypeMappings[i].Extension, cs.WebServer.ContentTypeMappings[i].Type);
                }
            }
            //+ check command line arguments
            Boolean usingProfile            = false;
            Boolean usingSpecifiedServerKey = false;
            String  activeProfile           = String.Empty;
            String  serverKey = String.Empty;

            if (dictionary.ContainsKey("activeProfile"))
            {
                activeProfile = dictionary["activeProfile"];
            }
            else if (dictionary.ContainsKey("serverKey"))
            {
                serverKey = dictionary["serverKey"];
            }
            else if (cs.StartupProfiles.Count > 0 && !String.IsNullOrEmpty(cs.StartupProfiles.ActiveProfile) && cs.StartupProfiles.ActiveProfile.ToLower(System.Globalization.CultureInfo.CurrentCulture) != "none")
            {
                activeProfile = cs.StartupProfiles.ActiveProfile;
            }
            List <ServerElement> servers = new List <ServerElement>();

            if (!String.IsNullOrEmpty(activeProfile) && activeProfile != "none")
            {
                servers = PullServersFromActiveProfile(activeProfile, cs);
            }
            //+
            if (servers.Count > 0)
            {
                usingProfile = true;
            }
            else
            {
                if (!String.IsNullOrEmpty(serverKey))
                {
                    servers.Add(FindServerConfiguration(serverKey, cs.Servers));
                    usingSpecifiedServerKey = true;
                }
                else
                {
                    for (int i = 0; i < cs.Servers.Count; i++)
                    {
                        servers.Add(cs.Servers[i]);
                    }
                }
            }
            //+
            if (servers.Count > 0)
            {
                for (int i = 0; i < servers.Count; i++)
                {
                    if (!servers[i].Disabled || usingProfile || usingSpecifiedServerKey)
                    {
                        instances.Add(new Instance
                        {
                            Name         = servers[i].Name,
                            Port         = servers[i].Port,
                            VirtualPath  = servers[i].VirtualPath,
                            PhysicalPath = servers[i].PhysicalPath,

                            BoundIPAddress         = servers[i].Binding.Address,
                            EnableIPAddressBinding = !String.IsNullOrEmpty(servers[i].Binding.Address),

                            HostConfiguration = new HostConfiguration
                            {
                                AllowedContentTypes      = types,
                                EnableFaviconTracing     = servers[i].RequestTracing.EnableFaviconTracing,
                                EnableTracing            = servers[i].RequestTracing.Enable,
                                EnableVerboseTypeTracing = servers[i].RequestTracing.EnableVerboseTypeTracing,
                                DefaultDocuments         = documents,
                                ContentTypeMappings      = contentTypeMappings
                            }
                        });
                    }
                }
            }
            return(instances);
        }
Exemple #17
0
        /// <summary>
        /// Login to the RRC server and perform some OSLC actions
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            CommandLineDictionary cmd = CommandLineDictionary.FromArguments(args);

            if (!ValidateOptions(cmd))
            {
                logger.Error("Syntax:  /url=https://<server>:port/<context>/ /user=<user> /password=<password> /project=\"<project_area>\"");
                logger.Error("Example: /url=https://exmple.com:9443/rm /user=ADMIN /password=ADMIN /project=\"JKE Banking (Requirements Management)\"");
                return;
            }

            String webContextUrl = cmd["url"];
            String user          = cmd["user"];
            String passwd        = cmd["password"];
            String projectArea   = cmd["project"];

            try {
                //STEP 0: Need to accept all SSL certificates for DotNet Open Auth to be able to do it's OAuth token generation UNLESS
                //the SSL certificate from CLM is a from a trusted certificate authority.
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(OslcClient.AcceptAllServerCertificates);

                //STEP 1: Initialize a Jazz rootservices helper and indicate we're looking for the RequirementManagement catalog
                JazzRootServicesHelper helper = new JazzRootServicesHelper(webContextUrl, OSLCConstants.OSLC_RM_V2);

                //STEP 2: Create a new OSLC OAuth capable client, the parameter of following call should be provided
                //This is a bit of a hack for readability.  It is assuming RRC is at context /rm.  Could use a regex or UriBuilder instead.
                String          authUrl = webContextUrl.Replace("/rm", "/jts"); // XXX - should be ReplaceFirst(), if it existed
                JazzOAuthClient client  = helper.InitOAuthClient("123456789", "secret", user, passwd, authUrl);

                //STEP 3: Get the URL of the OSLC ChangeManagement catalog
                String catalogUrl = helper.GetCatalogUrl();

                //STEP 4: Find the OSLC Service Provider for the project area we want to work with
                String serviceProviderUrl = client.LookupServiceProviderUrl(catalogUrl, projectArea);

                //STEP 5: Get the Query Capabilities URL so that we can run some OSLC queries
                String queryCapability = client.LookupQueryCapability(serviceProviderUrl,
                                                                      OSLCConstants.OSLC_RM_V2,
                                                                      OSLCConstants.RM_REQUIREMENT_TYPE);
                //STEP 6: Create base requirements
                //Get the Creation Factory URL for change requests so that we can create one
                Requirement requirement        = new Requirement();
                String      requirementFactory = client.LookupCreationFactory(
                    serviceProviderUrl, OSLCConstants.OSLC_RM_V2,
                    requirement.GetRdfTypes()[0].ToString());

                //Get Feature Requirement Type URL
                ResourceShape featureInstanceShape = RmUtil.LookupRequirementsInstanceShapes(
                    serviceProviderUrl, OSLCConstants.OSLC_RM_V2,
                    requirement.GetRdfTypes()[0].ToString(), client, "Feature");

                Uri rootFolder = null;
                //Get Collection Type URL
                RequirementCollection collection = new RequirementCollection();
                ResourceShape         collectionInstanceShape = RmUtil.LookupRequirementsInstanceShapes(
                    serviceProviderUrl, OSLCConstants.OSLC_RM_V2,
                    collection.GetRdfTypes()[0].ToString(), client, "Personal Collection");

                String req01URL     = null;
                String req02URL     = null;
                String req03URL     = null;
                String req04URL     = null;
                String reqcoll01URL = null;

                String primaryText = null;
                if ((featureInstanceShape != null) && (requirementFactory != null))
                {
                    // Create REQ01
                    requirement.SetInstanceShape(featureInstanceShape.GetAbout());
                    requirement.SetTitle("Req01");

                    // Decorate the PrimaryText
                    primaryText = "My Primary Text";
                    XElement obj = RmUtil.ConvertStringToHTML(primaryText);
                    requirement.GetExtendedProperties().Add(RmConstants.PROPERTY_PRIMARY_TEXT, obj);

                    requirement.SetDescription("Created By OSLC4Net");
                    requirement.AddImplementedBy(new Link(new Uri("http://google.com"), "Link in REQ01"));
                    //Create the change request
                    HttpResponseMessage creationResponse = client.CreateResource(
                        requirementFactory, requirement,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);
                    req01URL = creationResponse.Headers.Location.ToString();
                    creationResponse.ConsumeContent();

                    // Create REQ02
                    requirement = new Requirement();
                    requirement.SetInstanceShape(featureInstanceShape.GetAbout());
                    requirement.SetTitle("Req02");
                    requirement.SetDescription("Created By OSLC4Net");
                    requirement.AddValidatedBy(new Link(new Uri("http://bancomer.com"), "Link in REQ02"));
                    //Create the change request
                    creationResponse = client.CreateResource(
                        requirementFactory, requirement,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);

                    req02URL = creationResponse.Headers.Location.ToString();
                    creationResponse.ConsumeContent();

                    // Create REQ03
                    requirement = new Requirement();
                    requirement.SetInstanceShape(featureInstanceShape.GetAbout());
                    requirement.SetTitle("Req03");
                    requirement.SetDescription("Created By OSLC4Net");
                    requirement.AddValidatedBy(new Link(new Uri("http://outlook.com"), "Link in REQ03"));
                    //Create the change request
                    creationResponse = client.CreateResource(
                        requirementFactory, requirement,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);
                    req03URL = creationResponse.Headers.Location.ToString();
                    creationResponse.ConsumeContent();

                    // Create REQ04
                    requirement = new Requirement();
                    requirement.SetInstanceShape(featureInstanceShape.GetAbout());
                    requirement.SetTitle("Req04");
                    requirement.SetDescription("Created By OSLC4Net");

                    //Create the Requirement
                    creationResponse = client.CreateResource(
                        requirementFactory, requirement,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);
                    req04URL = creationResponse.Headers.Location.ToString();
                    creationResponse.ConsumeContent();

                    // Now create a collection
                    // Create REQ04
                    collection = new RequirementCollection();

                    collection.AddUses(new Uri(req03URL));
                    collection.AddUses(new Uri(req04URL));

                    collection.SetInstanceShape(collectionInstanceShape.GetAbout());
                    collection.SetTitle("Collection01");
                    collection.SetDescription("Created By OSLC4Net");
                    //Create the change request
                    creationResponse = client.CreateResource(
                        requirementFactory, collection,
                        OslcMediaType.APPLICATION_RDF_XML,
                        OslcMediaType.APPLICATION_RDF_XML);
                    reqcoll01URL = creationResponse.Headers.Location.ToString();
                    creationResponse.ConsumeContent();
                }

                // Check that everything was properly created
                if (req01URL == null ||
                    req02URL == null ||
                    req03URL == null ||
                    req04URL == null ||
                    reqcoll01URL == null)
                {
                    throw new Exception("Failed to create an artifact");
                }

                // GET the root folder based on First requirement created
                HttpResponseMessage getResponse = client.GetResource(req01URL, OslcMediaType.APPLICATION_RDF_XML);
                requirement = getResponse.Content.ReadAsAsync <Requirement>(client.GetFormatters()).Result;
                String etag1 = getResponse.Headers.ETag.ToString();
                // May not be needed getResponse.ConsumeContent();
                //Save the Uri of the root folder in order to used it easily
                rootFolder = (Uri)requirement.GetExtendedProperties()[RmConstants.PROPERTY_PARENT_FOLDER];

                String changedPrimaryText = (String )requirement.GetExtendedProperties()[RmConstants.PROPERTY_PRIMARY_TEXT];
                if (changedPrimaryText == null)
                {
                    // Check with the workaround
                    changedPrimaryText = (String )requirement.GetExtendedProperties()[PROPERTY_PRIMARY_TEXT_WORKAROUND];
                }

                if ((changedPrimaryText != null) && (!changedPrimaryText.Contains(primaryText)))
                {
                    logger.Error("Error getting primary Text");
                }

                //QUERIES
                // SCENARIO 01  Do a query for type= Requirements
                OslcQueryParameters queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>");
                queryParams.SetWhere("rdf:type=<http://open-services.net/ns/rm#Requirement>");
                OslcQuery       query  = new OslcQuery(client, queryCapability, 10, queryParams);
                OslcQueryResult result = query.Submit();
                bool            processAsDotNetObjects = false;
                int             resultsSize            = result.GetMembersUrls().Length;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 01 = " + resultsSize + "\n");


                // SCENARIO 02  Do a query for type= Requirements and for it folder container = rootFolder
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("nav=<http://com.ibm.rdm/navigation#>,rdf=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>");
                queryParams.SetWhere("rdf:type=<http://open-services.net/ns/rm#Requirement> and nav:parent=<" + rootFolder + ">");
                query  = new OslcQuery(client, queryCapability, 10, queryParams);
                result = query.Submit();
                processAsDotNetObjects = false;
                resultsSize            = result.GetMembersUrls().Length;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 02 = " + resultsSize + "\n");

                // SCENARIO 03	Do a query for title
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("dcterms=<http://purl.org/dc/terms/>");
                queryParams.SetWhere("dcterms:title=\"Req04\"");
                query                  = new OslcQuery(client, queryCapability, 10, queryParams);
                result                 = query.Submit();
                resultsSize            = result.GetMembersUrls().Length;
                processAsDotNetObjects = false;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 03 = " + resultsSize + "\n");

                // SCENARIO 04	Do a query for the link that is implemented
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("oslc_rm=<http://open-services.net/ns/rm#>");
                queryParams.SetWhere("oslc_rm:implementedBy=<http://google.com>");
                query                  = new OslcQuery(client, queryCapability, 10, queryParams);
                result                 = query.Submit();
                resultsSize            = result.GetMembersUrls().Length;
                processAsDotNetObjects = false;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 04 = " + resultsSize + "\n");

                // SCENARIO 05	Do a query for the links that is validated
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("oslc_rm=<http://open-services.net/ns/rm#>");
                queryParams.SetWhere("oslc_rm:validatedBy in [<http://bancomer.com>,<http://outlook.com>]");
                query                  = new OslcQuery(client, queryCapability, 10, queryParams);
                result                 = query.Submit();
                resultsSize            = result.GetMembersUrls().Length;
                processAsDotNetObjects = false;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 05 = " + resultsSize + "\n");

                // SCENARIO 06 Do a query for it container folder and for the link that is implemented
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("nav=<http://com.ibm.rdm/navigation#>,oslc_rm=<http://open-services.net/ns/rm#>");
                queryParams.SetWhere("nav:parent=<" + rootFolder + "> and oslc_rm:validatedBy=<http://bancomer.com>");
                query                  = new OslcQuery(client, queryCapability, 10, queryParams);
                result                 = query.Submit();
                resultsSize            = result.GetMembersUrls().Length;
                processAsDotNetObjects = false;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 06 = " + resultsSize + "\n");


                // GET resources from req03 in order edit its values
                getResponse = client.GetResource(req03URL, OslcMediaType.APPLICATION_RDF_XML);
                requirement = getResponse.Content.ReadAsAsync <Requirement>(client.GetFormatters()).Result;
                // Get the eTAG, we need it to update
                String etag = getResponse.Headers.ETag.ToString();
                getResponse.ConsumeContent();
                requirement.SetTitle("My new Title");
                requirement.AddImplementedBy(new Link(new Uri("http://google.com"), "Link created by an Eclipse Lyo user"));

                // Update the requirement with the proper etag
                HttpResponseMessage updateResponse = client.UpdateResource(req03URL,
                                                                           requirement, OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_RDF_XML, etag);

                updateResponse.ConsumeContent();

                /*Do a query in order to see if the requirement have changed*/
                // SCENARIO 07 Do a query for the new title just changed
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("dcterms=<http://purl.org/dc/terms/>");
                queryParams.SetWhere("dcterms:title=\"My new Title\"");
                query                  = new OslcQuery(client, queryCapability, 10, queryParams);
                result                 = query.Submit();
                resultsSize            = result.GetMembersUrls().Length;
                processAsDotNetObjects = false;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 07 = " + resultsSize + "\n");

                // SCENARIO 08	Do a query for implementedBy links
                queryParams = new OslcQueryParameters();
                queryParams.SetPrefix("oslc_rm=<http://open-services.net/ns/rm#>");
                queryParams.SetWhere("oslc_rm:implementedBy=<http://google.com>");
                query                  = new OslcQuery(client, queryCapability, 10, queryParams);
                result                 = query.Submit();
                resultsSize            = result.GetMembersUrls().Length;
                processAsDotNetObjects = false;
                ProcessPagedQueryResults(result, client, processAsDotNetObjects);
                Console.WriteLine("\n------------------------------\n");
                Console.WriteLine("Number of Results for SCENARIO 08 = " + resultsSize + "\n");
            } catch (RootServicesException re) {
                logger.Error("Unable to access the Jazz rootservices document at: " + webContextUrl + "/rootservices", re);
            } catch (Exception e) {
                logger.Error(e.Message, e);
            }
        }
Exemple #18
0
        public static void ProcessCommandLineArgs(string[] args)
        {
            var cmds = CommandLineDictionary.FromArguments(args, '-', '=');
            var arg  = "";

            if ((cmds.Count == 0) || cmds.TryGetValue("h", out arg) || cmds.TryGetValue("help", out arg))
            {
                Console.WriteLine(@"

    ++++++++++++++++++++++++++++++++++++++
    +++++++ RMS.Prototype.NGFM.CLI +++++++
    ++++++++++++++++++++++++++++++++++++++

    Usage:
        RMS.Prototype.NGFM.CLI.exe
            -d=<string>     - directory or file path with input protobuf-format files
            -gu=<string>    - directory or file path with GU input csv files
            [-s=<string>]   - SQL server name, default '(local)'
            [-log]          - write messages to log-file in 'Log' sub directory
            [-h] or [-help] - show this helper 
            [-singlecore]          - execute in single Thread

    Command line example (single thread):
        RMS.Prototype.NGFM.CLI.exe -d='D:\NGFM_work\NGFM_CLI_testdata' -gu='D:\NGFM_work\NGFM_CLI_testdata'");

                IsInitialized = false;
                return;
            }

            #region Getting command line parameters

            //Input directory or input file name:
            InputFile = null;

            if (cmds.TryGetValue("d", out arg))
            {
                FileAttributes attr = File.GetAttributes(arg);
                if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
                {
                    InputDirectory = arg;
                }
                else
                {
                    InputDirectory = Path.GetDirectoryName(arg);
                    InputFile      = arg;
                }
                OutputDirectory    = IOUtilities.CreateSubdirectory(InputDirectory, OutputSubdirectory);
                OutputLogDirectory = IOUtilities.CreateSubdirectory(InputDirectory, OutputLogSubdirectory);
                GUInputDirectory   = IOUtilities.CreateSubdirectory(InputDirectory, GUInputSubdirectory);
                GUInputFile        = "*.csv";
            }

            if (cmds.TryGetValue("gu", out arg))
            {
                FileAttributes attr = File.GetAttributes(arg);
                if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
                {
                    GUInputDirectory = arg;
                }
                else
                {
                    GUInputDirectory = Path.GetDirectoryName(arg);
                    GUInputFile      = Path.GetFileName(arg);
                }
            }

            //-----------------------------------

            #endregion

            IsInitialized = true;
        }