Exemple #1
0
        protected override void DoRun(CancellationToken token)
        {
            var ans = PlagiarismChecker.Check(TestData.Source1, TestData.Source2);

            foreach (var res in ans.AlgoResults)
            {
                Logger.Info("Check result - Id: {0}, Similarity: {1}, Verdict: {2}", res.AlgorithmId, res.Similarity, res.AlgorithmVerdict);
                Sleeper.Sleep();
            }
            Logger.Info("Aggregated result - Id: {0}, Similarity: {1}, Verdict: {2}", ans.AggregationInfo.AlgorithmId, ans.AggregationInfo.Similarity, ans.AggregationInfo.AlgorithmVerdict);
        }
        private bool RunTestMachine(Job job, ref string result)
        {
            Source src1 = LoadSource(job.SolutionToJudge.SolutionHash, job.SolutionToJudge.Language);

            if (src1 == null)
            {
                return(false);
            }
            var    comparasions    = new List <ComparasionResult>();
            double plagiarismLevel = 0.0;

            Stopwatch sw = Stopwatch.StartNew();

            foreach (var soluition in job.SolutionsToCompare)
            {
                Logger.Debug("Testing {0} and {1}", job.SolutionToJudge.SolutionId, soluition.SolutionId);
                var src2 = LoadSource(soluition.SolutionHash, soluition.Language);
                if (src2 == null)
                {
                    return(false);
                }
                var checkerResult = PlagiarismChecker.Check(src1, src2);
                comparasions.Add(new ComparasionResult {
                    SolutionId = soluition.SolutionId, TestResult = checkerResult
                });
                plagiarismLevel = Math.Max(plagiarismLevel, checkerResult.AggregationInfo.Similarity);
            }
            sw.Stop();
            Logger.Info("Tested {0} soluitons in {1} ms; result = {2:0.00}", job.SolutionsToCompare.Length, sw.ElapsedMilliseconds, plagiarismLevel);
            Logger.Debug("Cached solutions: {0}", Cache.Size());

            result = JsonConvert.SerializeObject(new JobTestResult {
                SolutionId = job.SolutionToJudge.SolutionId, OtherSolutions = comparasions.ToArray(), PlagiarismLevel = plagiarismLevel
            });
            return(true);
        }