From fcfbb1584ce9ea82a4e2ae08832ff305fefe61e6 Mon Sep 17 00:00:00 2001 From: Anton Bagliy <taccessviolation@gmail.com> Date: Sat, 31 Aug 2019 19:36:48 +0300 Subject: [PATCH] ADD: send grades with user nickname, subject and submodule id #61 --- NunitReportParser/Program.cs | 90 +++--- grades/Grades.json | 567 +++++++++++++++++++++++------------ 2 files changed, 418 insertions(+), 239 deletions(-) diff --git a/NunitReportParser/Program.cs b/NunitReportParser/Program.cs index 88a3869..ebda29c 100644 --- a/NunitReportParser/Program.cs +++ b/NunitReportParser/Program.cs @@ -31,61 +31,64 @@ namespace NunitReport } else { - ParseTestSuite(child); + ParseTestSuite(child); } } } - static void SendGrades(JObject settings, int recordBookID, int submoduleID, int disciplineID, double value) + static void SendGrades(JObject settings, string nickname, int submoduleNumber, int semester, string service, + string subject, double value) { //System.Console.Out.WriteLine("{0}-{1}-{2}-{3}", RecordBookID, SubmoduleID, DisciplineID, value); string gradeToken = (string) settings["GradeService"]["token"]; string gradeUrl = (string) settings["GradeService"]["url"]; string url = gradeUrl + "api/v0/sendGrades?token=" + gradeToken; - System.Console.Out.WriteLine(url); + //System.Console.Out.WriteLine(url); WebRequest request; request = WebRequest.Create(url); request.Method = "PUT"; request.ContentType = "application/json charset=utf-8"; - + using (var streamWriter = new StreamWriter(request.GetRequestStream())) { - string json = "{\"discipline\":"+ disciplineID.ToString() +"," + - "\"recordbook\":"+ recordBookID.ToString() +"," + - "\"submodules\": [" + - "{" + - "\"id\":" + submoduleID.ToString() + "," + - "\"value\":" + value.ToString(System.Globalization.CultureInfo.InvariantCulture) + - "}" + - "]" + + string json = "{\"subject\":\"" + subject + "\"," + + "\"nick\":\"" + nickname + "\"," + + "\"semester\":" + semester.ToString() + "," + + "\"service\":\"" + service + "\"," + + "\"submodules\": [" + + "{" + + "\"number\":" + submoduleNumber.ToString() + "," + + "\"value\":" + value.ToString(System.Globalization.CultureInfo.InvariantCulture) + + "}" + + "]" + "}"; - System.Console.WriteLine(json); + //System.Console.WriteLine(json); streamWriter.Write(json); } - + Stream objStream; var httpResponse = (HttpWebResponse) request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); - System.Console.Out.WriteLine(result); + // System.Console.Out.WriteLine(result); } } static void CountGrades(string userName) { - string configPath = @"../../../grades/Grades.json"; + string configPath = @"../../../grades/Grades.json"; if (basePath != "") { configPath = basePath + @"/grades/Grades.json"; } - + JObject grades = JObject.Parse(File.ReadAllText(configPath)); - JArray tasks = (JArray) grades["Tasks"]; + JArray tasks = (JArray) grades["Projects"]; - var countedGrades = new Dictionary<string, double>(); + var countedGrades = new Dictionary<int, double>(); foreach (XmlNode testcase in cases) { string caseClass; @@ -94,7 +97,8 @@ namespace NunitReport { caseClass = testcase.Attributes["classname"].Value.Split('.')[0]; caseName = testcase.Attributes["name"].Value; - } catch(Exception e) + } + catch (Exception e) { string[] fullName = testcase.Attributes["name"].Value.Split('.'); caseClass = fullName[0]; @@ -103,17 +107,18 @@ namespace NunitReport foreach (JObject task in tasks) { - if ((string) task["name"] == caseClass) + if ((string) task["namespace"] == caseClass) { - double maxGrade = (double) task["grades"][caseName]; + double maxGrade = (double) task["tests"][caseName]["grade"]; + int subModuleNumber = (int) task["tests"][caseName]["subModuleNumber"]; if (testcase.Attributes["result"].Value == "Passed") { - if (!countedGrades.ContainsKey(caseClass)) + if (!countedGrades.ContainsKey(subModuleNumber)) { - countedGrades[caseClass] = 0; + countedGrades[subModuleNumber] = 0; } - countedGrades[caseClass] += maxGrade; + countedGrades[subModuleNumber] += maxGrade; } } } @@ -121,38 +126,23 @@ namespace NunitReport //System.Console.Out.WriteLine(countedGrades[caseClass]); } - int discipline = (int) grades["Discipline"]["ID"]; - - foreach (KeyValuePair<string, double> g in countedGrades) + string subject = (string) grades["Discipline"]["Subject"]; + int semester = (int) grades["Discipline"]["Semester"]; + string nick = userName; + string service = (string) grades["Service"]; + + foreach (KeyValuePair<int, double> g in countedGrades) { if (g.Value > 0) { double grade = g.Value; grade *= 0.6; - - System.Console.Out.WriteLine(g.Key + " = " + grade.ToString()); - int recordBook = (int) grades["RecordBooks"][userName]; - JArray allTasks = (JArray) grades["Tasks"]; - foreach (JObject task in allTasks) - { - if ((string) task["name"] == g.Key) - { - JArray modules = (JArray) task["modules"]; - foreach (JObject module in modules) - { - int moduleid = (int) module["id"]; - double w = (double) module["weight"]; - double v = w * grade; - SendGrades(grades, recordBook, moduleid, discipline, v); - } - } - } - + System.Console.Out.WriteLine("submodule #" + g.Key.ToString() + " = " + grade.ToString()); + + SendGrades(grades, nick, g.Key, semester, service, subject, grade); } } - - } static void Main(string[] args) @@ -171,6 +161,7 @@ namespace NunitReport userName = "czen"; filePath = @"./TestResult.xml"; } + doc.Load(filePath); string[] XmlText = File.ReadAllLines(filePath); // System.Console.WriteLine("+++++++++++++++++++++++++"); @@ -186,7 +177,6 @@ namespace NunitReport foreach (XmlNode node in nodes) { - Console.Out.WriteLine(node.Name); if (node.Name == "test-suite") { ParseTestSuite(node); diff --git a/grades/Grades.json b/grades/Grades.json index 0a7d21d..15282d1 100644 --- a/grades/Grades.json +++ b/grades/Grades.json @@ -1,232 +1,421 @@ { - "RecordBooks": { - "czen": 148 - }, "GradeService": { "url": "http://grade/~dev_rating/", "token": "39se9832fh3e78fl23ois33mhfdff34gbuj34896" }, "Discipline": { - "ID": 3726 + "Subject": "Разработка компиляторов", + "Semester": 9 }, - "Tasks": [ - { "name": "TestSimpleLexer", - "modules": [ - { - "id": 35712, - "weight": 0.5 - }, - { - "id": 35713, - "weight": 0.5 - }, - ], - "grades": { - "TestId": 0, + "Service": "github", + "Projects": [ + { "namespace": "TestSimpleLexer", + "tests": { + "TestId": { + "grade": 0, + "subModuleNumber": 2, + }, + + "TestOps": { + "grade": 0.5, + "subModuleNumber": 2, + }, + "TestKeywords": { + "grade": 0.5, + "subModuleNumber": 2, + }, + "TestOpsFail": { + "grade": 1, + "subModuleNumber": 2, + }, + + "TestAssigns": { + "grade": 2, + "subModuleNumber": 2, + }, - "TestOps": 0.5, - "TestKeywords": 0.5, - "TestOpsFail": 1, + "TestComparisons": { + "grade": 1, + "subModuleNumber": 2, + }, - "TestAssigns": 2, + "TestComparisonsAndOps": { + "grade": 1, + "subModuleNumber": 3, + }, - "TestComparisons": 1, - "TestComparisonsAndOps": 1, + "TestComment": { + "grade": 1, + "subModuleNumber": 3, + }, + "TestCommentFileEnd": { + "grade": 0.5, + "subModuleNumber": 3, + }, - "TestComment": 1, - "TestCommentFileEnd": 0.5, - "TestCommentNextLine": 0.5, + "TestCommentNextLine": { + "grade": 0.5, + "subModuleNumber": 3, + }, - "TestMultLineComment": 0.5, - "TestCommentFileEnd": 0.5, - "TestCommentNextLine": 0.5, - "TestCommentNotClosed": 0.5 + "TestMultLineComment": { + "grade": 0.5, + "subModuleNumber": 3, + }, + "TestCommentFileEnd": { + "grade": 0.5, + "subModuleNumber": 3, + }, + "TestCommentNextLine": { + "grade": 0.5, + "subModuleNumber": 3, + }, + "TestCommentNotClosed": { + "grade": 0.5, + "subModuleNumber": 3, + } } }, - { "name": "TestLexer", - "modules": [ - { - "id": 35710, - "weight": 0.5 - }, - { - "id": 35711, - "weight": 0.5 - }, - ], - "grades": { - "TestIntParse": 0.2, - "TestIntFailDot": 0.2, - "TestIntFailSymbol": 0.2, - "TestIntFailEpty": 0.2, - "TestIntCollectNumber": 0.2, - - "TestIdParse": 0.1, - "TestIdEmpty": 0.15, - "TestIdCaps": 0.15, - "TestIdNumbers": 0.15, - "TestIdUnderscore" : 0.15, - "TestIdDot": 0.15, - "TestIdDollar": 0.15, - - "TestIntNotZeroParse": 0.33, - "TestIntNotZeroFail": 0.33, - "TestIntNotZeroPass": 0.34, - - "TestLetterDigitParse": 0.5, - "TestLetterDigitFail": 0.5, - - "TestLetterListParse": 0.5, - "TestLetterListFail": 0.5, - - "TestDigitListParse": 0.5, - "TestDigitListFail": 0.5, - - "TestLetterDigitGroupParse": 0.5, - "TestLetterDigitGroupFail": 0.5, - - "TestDoubleParse": 0.5, - "TestDoubleFail": 0.5, - - "TestQuotedStringParse": 0.5, - "TestQuotedStringFail": 0.5, - - "TestCommentParse": 0.5, - "TestCommentFail": 0.5, - - "TestIdChainParse": 0.5, - "TestIdChainFail": 0.5 + { "namespace": "TestLexer", + "tests": { + "TestIntParse": { + "grade": 0.2, + "subModuleNumber": 0, + }, + "TestIntFailDot": { + "grade": 0.2, + "subModuleNumber": 0, + }, + "TestIntFailSymbol": { + "grade": 0.2, + "subModuleNumber": 0, + }, + "TestIntFailEpty": { + "grade": 0.2, + "subModuleNumber": 0, + }, + "TestIntCollectNumber": { + "grade": 0.2, + "subModuleNumber": 0, + }, + + "TestIdParse": { + "grade": 0.1, + "subModuleNumber": 0, + }, + "TestIdEmpty": { + "grade": 0.15, + "subModuleNumber": 0, + }, + "TestIdCaps": { + "grade": 0.15, + "subModuleNumber": 0, + }, + "TestIdNumbers": { + "grade": 0.15, + "subModuleNumber": 0, + }, + "TestIdUnderscore" : { + "grade": 0.15, + "subModuleNumber": 0, + }, + "TestIdDot": { + "grade": 0.15, + "subModuleNumber": 0, + }, + "TestIdDollar": { + "grade": 0.15, + "subModuleNumber": 0, + }, + + "TestIntNotZeroParse": { + "grade": 0.33, + "subModuleNumber": 0, + }, + "TestIntNotZeroFail": { + "grade": 0.33, + "subModuleNumber": 0, + }, + "TestIntNotZeroPass": { + "grade": 0.34, + "subModuleNumber": 0, + }, + + "TestLetterDigitParse": { + "grade": 0.5, + "subModuleNumber": 0, + }, + "TestLetterDigitFail": { + "grade": 0.5, + "subModuleNumber": 0, + }, + + "TestLetterListParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestLetterListFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, + + "TestDigitListParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestDigitListFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, + + "TestLetterDigitGroupParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestLetterDigitGroupFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, + + "TestDoubleParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestDoubleFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, + + "TestQuotedStringParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestQuotedStringFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, + + "TestCommentParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestCommentFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, + + "TestIdChainParse": { + "grade": 0.5, + "subModuleNumber": 1, + }, + "TestIdChainFail": { + "grade": 0.5, + "subModuleNumber": 1, + }, } }, { "name": "TestGeneratedLexer", - "modules": [ - { - "id": 35714, - "weight": 0.5 + "tests": { + "TestIdCount": { + "grade": 1.5, + "subModuleNumber": 4, }, - { - "id": 35715, - "weight": 0.5 + "TestIdInfo": { + "grade": 2, + "subModuleNumber": 4, }, - ], - "grades": { - "TestIdCount": 1.5, - "TestIdInfo": 2, - "TestNumbers": 1.5, + "TestNumbers": { + "grade": 1.5, + "subModuleNumber": 4, + }, - "TestString": 1, - "TestSingleLineCmt": 1, + "TestString": { + "grade": 1, + "subModuleNumber": 5, + }, + "TestSingleLineCmt": { + "grade": 1, + "subModuleNumber": 5, + }, - "TestMultiLineCmt": 1, - "TestMultiLineCmtIds": 2 + "TestMultiLineCmt": { + "grade": 1, + "subModuleNumber": 5, + }, + "TestMultiLineCmtIds": { + "grade": 2, + "subModuleNumber": 5, + } } }, - { "name": "TestGeneratedParser", - "modules": [ - { - "id": 35721, - "weight": 0.5 - }, - { - "id": 35722, - "weight": 0.5 - }, - ], - "grades": { - "TestWhile": 2, - "TestRepeat": 2, - "TestFor": 2, - "TestWrite": 2, - "TestIf": 2, - "TestVar": 3, - "TestExr": 3 + { "namespace": "TestGeneratedParser", + "tests": { + "TestWhile": { + "grade": 2, + "subModuleNumber": 6, + }, + "TestRepeat": { + "grade": 2, + "subModuleNumber": 6, + }, + "TestFor": { + "grade": 2, + "subModuleNumber": 6, + }, + "TestWrite": { + "grade": 2, + "subModuleNumber": 6, + }, + "TestIf": { + "grade": 2, + "subModuleNumber": 7, + }, + "TestVar": { + "grade": 3, + "subModuleNumber": 7, + }, + "TestExr": { + "grade": 3, + "subModuleNumber": 7, + } } }, - { "name": "TestDescentParser", - "modules": [ - { - "id": 35719, - "weight": 0.5 - }, - { - "id": 35720, - "weight": 0.5 - }, - ], - "grades": { - "TestWhile": 3, - "TestFor": 4, - "TestIf": 3, - "TestExpr": 4 + { "namespace": "TestDescentParser", + "tests": { + "TestWhile": { + "grade": 3, + "subModuleNumber": 8, + }, + "TestFor": { + "grade": 4, + "subModuleNumber": 8, + }, + "TestIf": { + "grade": 3, + "subModuleNumber": 9, + }, + "TestExpr": { + "grade": 4, + "subModuleNumber": 9, + } } }, { "name": "TestASTParser", - "modules": [ - { - "id": 35723, - "weight": 0.5 - }, - { - "id": 35724, - "weight": 0.5 - }, - ], - "grades": { - "TestWhile": 2, - "TestRepeat": 2, - "TestFor": 2, - "TestWrite": 2, - "TestIf": 2, - "TestVarDef": 3, - "TestBinary": 3, + "tests": { + "TestWhile": { + "grade": 2, + "subModuleNumber": 10, + }, + "TestRepeat": { + "grade": 2, + "subModuleNumber": 10, + }, + "TestFor": { + "grade": 2, + "subModuleNumber": 10, + }, + "TestWrite": { + "grade": 2, + "subModuleNumber": 10, + }, + "TestIf": { + "grade": 2, + "subModuleNumber": 11, + }, + "TestVarDef": { + "grade": 3, + "subModuleNumber": 11, + }, + "TestBinary": { + "grade": 3, + "subModuleNumber": 11, + } } }, { "name": "TestCodeGenerator", - "modules": [ - { - "id": 35726, - "weight": 0.4444 - }, - { - "id": 35727, - "weight": 0.5555 - }, - ], - "grades": { - "SmokeTest": 0, - "TestOutput": 0, - "TestIntDivMod": 8, - "TestIf": 3, - "TestWhile": 3, - "TestUntil": 2 + "tests": { + "SmokeTest": { + "grade": 0, + "subModuleNumber": 12, + }, + "TestOutput": { + "grade": 0, + "subModuleNumber": 12, + }, + "TestIntDivMod": { + "grade": 8, + "subModuleNumber": 12, + }, + "TestIf": { + "grade": 3, + "subModuleNumber": 12, + }, + "TestWhile": { + "grade": 3, + "subModuleNumber": 12, + }, + "TestUntil": { + "grade": 2, + "subModuleNumber": 12, + }, } }, { "name": "TestVisitors", - "modules": [ - { - "id": 35725, - "weight": 0.5 - } - ], - "grades": { - "NoLoopTest": 0.5, - "ThreeLoopsTest": 0.5, + "tests": { + "NoLoopTest": { + "grade": 0.5, + "subModuleNumber": 14, + }, + "ThreeLoopsTest": { + "grade": 0.5, + "subModuleNumber": 14, + }, - "OneVarTest": 0.5, - "ManyVarTest": 0.5, + "OneVarTest": { + "grade": 0.5, + "subModuleNumber": 14, + }, + "ManyVarTest": { + "grade": 0.5, + "subModuleNumber": 14, + }, - "AssignTest": 0.33, - "CycleTest": 0.33, - "WriteTest": 0.34, + "AssignTest": { + "grade": 0.33, + "subModuleNumber": 14, + }, + "CycleTest": { + "grade": 0.33, + "subModuleNumber": 14, + }, + "WriteTest": { + "grade": 0.34, + "subModuleNumber": 14, + }, - "OneLoopTest": 0.33, - "ThreeLoopsTest1": 0.33, - "LoopTreeTest": 0.34, + "OneLoopTest": { + "grade": 0.33, + "subModuleNumber": 14, + }, + "ThreeLoopsTest1": { + "grade": 0.33, + "subModuleNumber": 14, + }, + "LoopTreeTest": { + "grade": 0.34, + "subModuleNumber": 14, + }, - "SimpleTest": 1, + "SimpleTest": { + "grade": 1, + "subModuleNumber": 14, + }, - "FirstTest": 3 + "FirstTest": { + "grade": 3, + "subModuleNumber": 14, + }, } } ] -- GitLab