Ejemplo n.º 1
0
 public static string Date(string minDate, string maxDate, string format)
 {
     return(Rand.Date(System.DateTime.Parse(minDate), System.DateTime.Parse(maxDate)).ToString(format));
 }
Ejemplo n.º 2
0
        public ExitCode GetReports(string pPath, bool pWithPrompts, string pAssociatedInstance, out Report[] pReports)
        {
            _cancel = false;
            _sessionmanager.ResetSessionTimeOut();
            int reportid = 5000;

            pReports = new Report[] { };
            ExitCode        exitcode = ExitCode.SUCCEED;
            List <Report>   reports  = new List <Report>();
            List <string[]> queries  = new List <string[]>();
            string          select   = "SI_ID,SI_KIND,SI_NAME,SI_PARENT_CUID,SI_CHILDREN,SI_CREATION_TIME,SI_UPDATE_TS,SI_LAST_SUCCESSFUL_INSTANCE_ID,SI_PROCESSINFO,SI_PROCESSINFO.SI_HAS_PROMPTS,SI_PROCESSINFO.SI_PROMPTS,SI_PROCESSINFO.SI_WEBI_PROMPTS,SI_PROCESSINFO.SI_FULLCLIENT_PROMPTS";

            string where = "SI_KIND IN('Webi','Publication','CrystalReport','ObjectPackage') AND SI_INSTANCE=0";
            if (System.Text.RegularExpressions.Regex.Match(pPath, @"^[\d, ]+$").Success)
            {
                queries.Add(new string[2] {
                    pPath, "query://{SELECT " + select + " FROM CI_INFOOBJECTS WHERE " + where + " AND SI_ID IN(" + pPath + ")}"
                });
            }
            else
            {
                foreach (string query in pPath.Split(','))
                {
                    queries.Add(new string[2] {
                        query, "path://InfoObjects/*/" + query.TrimStart(new char[] { '/' }) + "[" + where + "]@" + select
                    });
                }
            }
            _sessionmanager.InitProgress(3, 100, queries.Count);
            #region  Loop through queries
            foreach (string[] query in queries)
            {
                switch (pAssociatedInstance)
                {
                case "LAST_SUCCEED": _sessionmanager.Log("Get reports with last succeed instances for " + query[0]); break;

                case "LAST_FAILED": _sessionmanager.Log("Get reports with last failed instances for " + query[0]); break;

                case "LAST_CREATED": _sessionmanager.Log("Get reports with last created instances for " + query[0]); break;

                default: _sessionmanager.Log("Get reports without instance in " + query[0]); break;
                }
                object[] pages   = new object[Rand.Number(0, 10)];
                object[] objects = new object[Rand.Number(0, 100)];

                _sessionmanager.Log("Nb Pages: " + pages.Length.ToString());
                _sessionmanager.Log("Nb objects: " + objects.Length.ToString());

                if (objects.Length == 0)
                {
                    throw new Exception("Query didn't return any objects ! ");
                }

                _sessionmanager.InitSubProgress(pages.Length * objects.Length);
                if (_cancel)
                {
                    return(ExitCode.CANCELED);
                }
                int nbPages   = pages.Length;
                int nbReports = 0;
                #region Loop through pages
                for (int p = 0; p < nbPages; p++)
                {
                    nbReports = objects.Length;
                    if (nbReports != 0)
                    {
                        if (_tstPageingException)
                        {
                            throw new Exception("Web service paging failed !");
                        }
                    }
                    #region Loop through reports                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #region Loop through reports
                    for (int r = 0; r < nbReports; r++)
                    {
                        string loginfo = string.Empty;
                        _sessionmanager.Log("Get report " + Rand.String(10));
                        Instance instance = new Instance();
                        Prompt[] prompts  = new Prompt[Rand.Number(0, 8)];
                        try
                        {
                            instance.Cuid   = Rand.String(10);
                            instance.Id     = Rand.Number(1, 10000);
                            instance.Date   = Rand.Date("2010/01/01", "2012/12/30", "yyyy/MM/dd HH:mm");
                            instance.Status = Rand.List("FAILURE", "COMPLETE", "OTHER");
                            instance.Time   = Rand.Time("00:00:00", "00:10:00");
                            for (int i = 0; i < prompts.Length; i++)
                            {
                                prompts[i] = new Prompt
                                {
                                    Name  = "Prompt" + i.ToString(),
                                    Value = Rand.String(10)
                                };
                            }
                            Rand.Exception(5, "Failed to get object!");
                        }
                        catch (Exception ex)
                        {
                            loginfo = _sessionmanager.ParseException(ex);
                            _sessionmanager.Log(" Error: " + _sessionmanager.ParseException(ex));
                            exitcode = ExitCode.HASERROR;
                        }
                        reports.Add(new Report
                        {
                            LOG      = loginfo,
                            Instance = instance,
                            Cuid     = Rand.String(10),
                            Id       = reportid++,
                            Type     = Rand.List("Webi", "Publication", "CrystalReport", "ObjectPackage"),
                            Name     = "Name" + Rand.String(5),
                            Folder   = "//" + Rand.String(9) + "/" + Rand.String(4),
                            NbChild  = Rand.Number(0, 4),
                            Prompts  = prompts
                        });
                        _sessionmanager.IncSubProgress();
                        if (_cancel)
                        {
                            return(ExitCode.CANCELED);
                        }
                    }
                    #endregion
                }
                #endregion  Loop through pages
                _sessionmanager.IncProgress();
            }
            #endregion  Loop through queries
            pReports = reports.ToArray();
            return(exitcode);
        }