Exemplo n.º 1
0
        public virtual void PublishContestResultToNotExistingContestTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest

            var dummyContest = CreateDummyContest("PublishContestResultToNotExistingContestTest");

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, response.Status);

            //once the contest is published test publishing contest results

            //create dummy contest results, they have to match contest metric definitions
            var results = GenerateDummyResults(LineSeriesMetric, BoxSummaryMetric);

            //generate new valid guid, but to contest that does not exist
            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(Guid.NewGuid().ToString(), "Mock technique", "Mock technique description", results, score, FakeBaseData);

            //reuse the same ticket and valid credentials...
            //typically it would be another user, but it doesn't matter for test purposes (it may be so the contest creator also publishes results)
            ContestResultsPublishedResponse resultPublishedResponse = PublishContestResultSync(authenticationResponse.Ticket, ValidCredentials.Username, contestResults);

            Assert.AreEqual(ResponseStatus.STATUS_FAILURE, resultPublishedResponse.Status);
            Assert.IsNotNull(resultPublishedResponse.ErrorMessage);
            Assert.AreEqual("The contest of the given id does not exists.", resultPublishedResponse.ErrorMessage);
        }
Exemplo n.º 2
0
        public virtual void PublishContestWithIncorrectBaselineResultsTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest
            var dummyContest = CreateDummyContest("PublishContestWithIncorrectBaselineResultsTest");

            //create dummy contest results that are incorrect (they do not match contest metric definitions)
            var seriesMetric   = MockContestResultsHelper.CreateDummySeriesMetricResults("Not matching series metric name", "Some description");
            var boxMetric      = MockContestResultsHelper.CreateDummyBoxSummaryMetricResults("Not matchin box metric name", "Some description");
            var resultDataset1 = CreateDummyResultsDTO("Dataset 1", seriesMetric, boxMetric); //the name of metric won't match with metric definitions in the contest
            var allResults     = new List <DatasetResultsDTO>()
            {
                resultDataset1
            };

            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(dummyContest.ContestGUID, "Baseline", "Baseline technique description", allResults, score, FakeBaseData);

            dummyContest.BaselineResults = contestResults;

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_FAILURE, response.Status);
            Assert.IsNotNull(response.ErrorMessage);
            Assert.AreEqual("Baseline results failed to be saved. Metric results does not match metrics defined in the contest.", response.ErrorMessage);
        }
Exemplo n.º 3
0
        public virtual void PublishEmptyContestResultTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest
            var dummyContest = CreateDummyContest("PublishEmptyContestResultTest");

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, response.Status);

            //once the contest is published test publishing contest results

            //create dummy contest results (they have to match contest metric definitions
            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(dummyContest.ContestGUID, "Mock technique", "Mock technique description", new List <DatasetResultsDTO>(), score, FakeBaseData);

            //reuse the same ticket and valid credentials...
            //typically it would be another user, but it doesn't matter for test purposes (it may be so the contest creator also publishes results)
            ContestResultsPublishedResponse resultPublishedResponse = PublishContestResultSync(authenticationResponse.Ticket, ValidCredentials.Username, contestResults);

            //cannot publish empty results
            Assert.AreEqual(ResponseStatus.STATUS_FAILURE, resultPublishedResponse.Status);
            Assert.IsNotNull(resultPublishedResponse.ErrorMessage);
            Assert.AreEqual("Metric results does not match metrics defined in the contest.", resultPublishedResponse.ErrorMessage);
        }
Exemplo n.º 4
0
        public virtual void PublishContestWithBaselineResultsTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest
            var dummyContest = CreateDummyContest("PublishContestWithBaselineResultsTest");

            //create dummy contest results (they have to match contest metric definitions
            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(dummyContest.ContestGUID, "Baseline", "Baseline technique description", DummyCorrectResults, score, FakeBaseData);

            dummyContest.BaselineResults = contestResults;

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, response.Status);
            Assert.IsNull(response.ErrorMessage);
            Assert.IsNotNull(response.ContestWebsiteLink);
        }
Exemplo n.º 5
0
        private static async Task <ContestResults> GetContest(string eventID)
        {
            APIService   srv              = new APIService();
            ContestModel model            = new ContestModel();
            Dictionary <string, string> p = new Dictionary <string, string>();

            p.Add("eventId", string.Format("'{0}'", eventID));

            model.CommandModel.SessionToken = await App.GetUsersSession();

            model.CommandModel.ServiceName = "Contest";
            model.CommandModel.Action      = "GetContestForEvent";
            model.CommandModel.Parameters  = p;

            ContestResults result = null;
            var            cache  = BlobCache.UserAccount;
            var            cachedContestsPromise = cache.GetAndFetchLatest(
                "contests",
                () => srv.GetContestsForEvent(model.CommandModel),
                offset =>
            {
                TimeSpan elapsed = DateTimeOffset.Now - offset;
                return(elapsed > new TimeSpan(hours: 0, minutes: 10, seconds: 0));
            });

            cachedContestsPromise.Subscribe(subscribedContests =>
            {
                result = subscribedContests;
            });

            result = await cachedContestsPromise.FirstOrDefaultAsync();

            return(result);
        }
Exemplo n.º 6
0
        public static ContestResults PrepareBaselineContestRestults(string contestId,
                                                                    TraceLabSDK.Types.Contests.TLExperimentResults experimentResults,
                                                                    string techniqueName,
                                                                    string techniqueDescription)
        {
            List <DatasetResultsDTO> results = new List <DatasetResultsDTO>();

            foreach (TraceLabSDK.Types.Contests.DatasetResults dataset in experimentResults.DatasetsResults)
            {
                results.Add(new DatasetResultsDTO(dataset));
            }

            var baselineResults = new ContestResults(contestId, techniqueName, techniqueDescription, results, experimentResults.Score, experimentResults.BaseData);

            return(baselineResults);
        }
Exemplo n.º 7
0
        public virtual void PublishContestResultTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest
            var dummyContest = CreateDummyContest("PublishContestResultTest");

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, response.Status);

            //once the contest is published test publishing contest results

            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(dummyContest.ContestGUID,
                                                               "Mock technique", "Mock technique description", DummyCorrectResults, score, FakeBaseData);

            //reuse the same ticket and valid credentials...
            //typically it would be another user, but it doesn't matter for test purposes (it may be so the contest creator also publishes results)
            ContestResultsPublishedResponse resultPublishedResponse = PublishContestResultSync(authenticationResponse.Ticket, ValidCredentials.Username, contestResults);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, resultPublishedResponse.Status);
            Assert.IsNull(resultPublishedResponse.ErrorMessage);

            //create other set of results for the same metrics
            var lineSeriesMetric    = MockContestResultsHelper.CreateDummySeriesMetricResults(m_mockSeriesMetricName, "Mock series metric description");
            var boxSummaryMetric    = MockContestResultsHelper.CreateDummyBoxSummaryMetricResults(m_mockBoxPlotMetricName, "Mock box plot metric description");
            var otherCorrectResults = GenerateDummyResults(lineSeriesMetric, boxSummaryMetric);

            score                   = random.NextDouble();
            contestResults          = new ContestResults(dummyContest.ContestGUID, "Another technique", "Another technique description", otherCorrectResults, score, FakeBaseData);
            resultPublishedResponse = PublishContestResultSync(authenticationResponse.Ticket, ValidCredentials.Username, contestResults);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, resultPublishedResponse.Status);
            Assert.IsNull(resultPublishedResponse.ErrorMessage);
            Assert.IsNotNull(resultPublishedResponse.ContestWebsiteLink);
        }
Exemplo n.º 8
0
        public virtual void PublishNotMatchingContestResultTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest
            var dummyContest = CreateDummyContest("PublishNotMatchingContestResultTest");

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, response.Status);

            //once the contest is published test publishing contest results

            //create dummy contest results, that have metric that does not match contest metric definitions
            var seriesMetric   = MockContestResultsHelper.CreateDummySeriesMetricResults("Not matching series metric name", "Some description");
            var boxMetric      = MockContestResultsHelper.CreateDummyBoxSummaryMetricResults("Not matchin box metric name", "Some description");
            var resultDataset1 = CreateDummyResultsDTO("Dataset 1", seriesMetric, boxMetric); //the name of metric won't match with metric definitions in the contest
            var allResults     = new List <DatasetResultsDTO>()
            {
                resultDataset1
            };

            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(dummyContest.ContestGUID, "Mock technique", "Mock technique description", allResults, score, FakeBaseData);

            //reuse the same ticket and valid credentials...
            //typically it would be another user, but it doesn't matter for test purposes (it may be so the contest creator also publishes results)
            ContestResultsPublishedResponse resultPublishedResponse = PublishContestResultSync(authenticationResponse.Ticket, ValidCredentials.Username, contestResults);

            //cannot publish empty results
            Assert.AreEqual(ResponseStatus.STATUS_FAILURE, resultPublishedResponse.Status);
            Assert.IsNotNull(resultPublishedResponse.ErrorMessage);
            Assert.AreEqual("Metric results does not match metrics defined in the contest.", resultPublishedResponse.ErrorMessage);
        }
Exemplo n.º 9
0
        public void ExecutePublishResults(string ticket, string username, Callback <ContestResultsPublishedResponse> publishingResultsCallback)
        {
            //get the unitname to be loaded from workspace
            string experimentResultsUnitname = SelectedBenchmark.BenchmarkInfo.ExperimentResultsUnitname;

            //create an experiment workspace wrapper with experiment info
            var benchmarkWorkspaceWrapper = new ExperimentWorkspaceWrapper(m_workspace, SelectedBenchmark.BenchmarkInfo.Id);

            var experimentResults = benchmarkWorkspaceWrapper.Load(experimentResultsUnitname) as TraceLabSDK.Types.Contests.TLExperimentResults;

            if (experimentResults != null)
            {
                ContestResults results = BenchmarkResultsHelper.PrepareBaselineContestRestults(SelectedBenchmark.BenchmarkInfo.Id,
                                                                                               experimentResults,
                                                                                               TechniqueName, TechniqueDescription);

                WebService.PublishContestResults(ticket, username, results, publishingResultsCallback);
            }
            else
            {
                throw new InvalidOperationException("The experiment results outputed in the contest are empty! Empty results cannot be publish! ");
            }
        }
Exemplo n.º 10
0
        public virtual void PublishContestResultAfterDeadlineTest()
        {
            //authenticate with valid credentials
            AuthenticationResponse authenticationResponse = AuthenticateSync(ValidCredentials);

            //check if authentication succeed
            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, authenticationResponse.Status);

            //create dummy contest
            var dummyContest = CreateDummyContest("PublishContestResultAfterDeadlineTest");

            //set some deadline, that has already passed
            dummyContest.SetDeadline(new DateTime(1999, 1, 12));

            //the authentication provides the ticket necessary to publish the contest
            ContestPublishedResponse response = PublishContestSync(authenticationResponse.Ticket, ValidCredentials.Username, dummyContest);

            Assert.AreEqual(ResponseStatus.STATUS_SUCCESS, response.Status);

            //once the contest is published test publishing contest results

            //create dummy contest results
            var results = GenerateDummyResults(LineSeriesMetric, BoxSummaryMetric);

            Random         random         = new Random();
            double         score          = random.NextDouble();
            ContestResults contestResults = new ContestResults(dummyContest.ContestGUID, "Mock technique", "Mock technique description", results, score, FakeBaseData);

            //reuse the same ticket and valid credentials...
            //typically it would be another user, but it doesn't matter for test purposes (it may be so the contest creator also publishes results)
            ContestResultsPublishedResponse resultPublishedResponse = PublishContestResultSync(authenticationResponse.Ticket, ValidCredentials.Username, contestResults);

            Assert.AreEqual(ResponseStatus.STATUS_FAILURE, resultPublishedResponse.Status);
            Assert.IsNotNull(resultPublishedResponse.ErrorMessage);
            Assert.AreEqual("The contest results could not been published, because it is passed the deadline.", resultPublishedResponse.ErrorMessage);
        }
Exemplo n.º 11
0
 private void LoadContestResults()
 {
     Contest contest = Contest.GetLastContest();
     ContestResults cResults = new ContestResults();
     cResults.GetContestVideosForContest(contest.ContestID);
     ViewBag.ContestResults = cResults;
 }
Exemplo n.º 12
0
        protected ContestResultsPublishedResponse PublishContestResultSync(string ticket, string username, ContestResults contestResults)
        {
            ContestResultsPublishedResponse response = DoAsyncCallAsSynchronous <ContestResultsPublishedResponse>(
                (Callback <ContestResultsPublishedResponse> callback) =>
            {
                WebService.PublishContestResults(ticket, username, contestResults, callback);
            });

            return(response);
        }