LTI debugging and Juniper

Can anyone recommend a way to debug LTI ?

Under Ironwood I could access one of our courses through http://ltiapps.net/test/tc.php and get the result back in the gradebook.

Under Juniper I can still access the same course but the result is not propagated back to the gradebook.

Here are some extracts from the logs, but I can’t figure out why I get a 400 response back… Any ideas? Any suggestions?

Jan 21 11:05:48 ip-10-0-0-71 [service_variant=lms][celery.worker.strategy][env:sandbox] INFO [ip-10-0-0-71 19192] [user None] [strategy.py:60] - Received task: lms.djangoapps.grades.tasks.recalculate_subsection_grade_v3[34db3fa2-9a5d-4a14-b84d-ca36f9fc105e] eta:[2020-01-21 16:05:50.049101+00:00]

Jan 21 11:05:48 ip-10-0-0-71 [service_variant=lms][celery_utils.logged_task][env:sandbox] INFO [ip-10-0-0-71 19166] [user 131970] [logged_task.py:31] - Task lms.djangoapps.grades.tasks.recalculate_subsection_grade_v3[34db3fa2-9a5d-4a14-b84d-ca36f9fc105e] submitted with arguments None, {‘course_id’: ‘course-v1:UMontreal+TEST_LTI_01+E2016’, ‘event_transaction_id’: ‘666a496c-55ca-4734-97dc-f49037c82e72’, ‘usage_id’: ‘block-v1:UMontreal+TEST_LTI_01+E2016+type@problem+block@5753b0b25f2443c6867b348275a3818d’, ‘force_update_subsections’: False, ‘event_transaction_type’: ‘edx.grades.problem.submitted’, ‘score_deleted’: None, ‘only_if_higher’: None, ‘expected_modified_time’: 1579622748, ‘anonymous_user_id’: None, ‘user_id’: 131970, ‘score_db_table’: ‘csm’}

Jan 21 11:05:48 ip-10-0-0-71 [service_variant=lms][celery.worker.strategy][env:sandbox] INFO [ip-10-0-0-71 19192] [user None] [strategy.py:60] - Received task: lti_provider.tasks.send_composite_outcome[c616c30c-1f1f-4511-9d6e-3568f6eb51d1] eta:[2020-01-21 16:08:48.090865+00:00]

Jan 21 11:05:51 ip-10-0-0-71 [service_variant=lms][lms.djangoapps.grades.course_grade_factory][env:sandbox] INFO [ip-10-0-0-71 19853] [user None] [course_grade_factory.py:225] - Grades: Update, Course: course_key: course-v1:UMontreal+TEST_LTI_01+E2016, version: 5db092fc6a2caa0b6573e212, edited_on: 2019-10-23 17:50:52.091000+00:00, grading_policy: z9TLT0kWbxYf2HFm6Xr2N1QJBbg=, User: 131970, Course Grade: percent: 1.0, letter_grade: Pass, passed: True, persisted: False

Jan 21 11:05:51 ip-10-0-0-71 [service_variant=lms][celery.worker.job][env:sandbox] INFO [ip-10-0-0-71 19192] [user None] [job.py:402] - Task lms.djangoapps.grades.tasks.recalculate_subsection_grade_v3[34db3fa2-9a5d-4a14-b84d-ca36f9fc105e] succeeded in 0.5742135950004013s: None

Jan 21 11:08:48 ip-10-0-0-71 [service_variant=lms][lms.djangoapps.grades.course_grade_factory][env:sandbox] INFO [ip-10-0-0-71 19853] [user None] [course_grade_factory.py:225] - Grades: Update, Course: course_key: course-v1:UMontreal+TEST_LTI_01+E2016, version: 5db092fc6a2caa0b6573e212, edited_on: 2019-10-23 17:50:52.091000+00:00, grading_policy: z9TLT0kWbxYf2HFm6Xr2N1QJBbg=, User: 131970, Course Grade: percent: 1.0, letter_grade: Pass, passed: True, persisted: False

Jan 21 11:08:49 ip-10-0-0-71 [service_variant=lms][edx.lti_provider][env:sandbox] ERROR [ip-10-0-0-71 19853] [user None] [outcomes.py:160] - Outcome Service: Failed to update score on LTI consumer. User: qmUwUMD8Ds6jANodGFPnlV254Btyz1, course: course-v1:UMontreal+TEST_LTI_01+E2016, usage: block-v1:UMontreal+TEST_LTI_01+E2016+type@sequential+block@1c40b4c92c58421da885bea7a63992e1, score: 1.0, status: <Response [400]>, body: Unknown

Jan 21 11:08:49 ip-10-0-0-71 [service_variant=lms][celery.worker.job][env:sandbox] INFO [ip-10-0-0-71 19192] [user None] [job.py:402] - Task lti_provider.tasks.send_composite_outcome[c616c30c-1f1f-4511-9d6e-3568f6eb51d1] succeeded in 0.33479275300032896s: None

What I find interesting is that my first attempt was made with our fork of edx-platform.

I tried it again on a clean open-release/juniper.alpha1 release on a single server. I imported my course. Regenerated new LTI consumer key and secret.

Exact same problem. I can therefore eliminate that the problem is with our fork. I would have preferred a successful result to be honest… Now, I just don’t know where to look at for an answer to this problem…

Jan 21 18:11:05 ip-10-0-0-139 [service_variant=lms][lms.djangoapps.grades.course_grade_factory][env:sandbox] INFO [ip-10-0-0-139  4181] [user None] [course_grade_factory.py:225] - Grades: Update, Course: course_key: course-v1:UMontreal+TEST_LTI_01+E2016, version: 5e273afff5037a1057e3af08, edited_on: 2020-01-21 17:55:11.692000+00:00, grading_policy: z9TLT0kWbxYf2HFm6Xr2N1QJBbg=, User: 17, Course Grade: percent: 1.0, letter_grade: Pass, passed: True, persisted: False
Jan 21 18:11:05 ip-10-0-0-139 [service_variant=lms][edx.lti_provider][env:sandbox] ERROR [ip-10-0-0-139  4181] [user None] [outcomes.py:152] - Outcome Service: Failed to update score on LTI consumer. User: uSJpaTAlvgf8j3vLA776oo6BlimrZ5, course: course-v1:UMontreal+TEST_LTI_01+E2016, usage: block-v1:UMontreal+TEST_LTI_01+E2016+type@sequential+block@1c40b4c92c58421da885bea7a63992e1, score: 1.0, status: <Response [400]>, body: Unknown
Jan 21 18:11:05 ip-10-0-0-139 [service_variant=lms][celery.worker.job][env:sandbox] INFO [ip-10-0-0-139  2356] [user None] [job.py:402] - Task lti_provider.tasks.send_composite_outcome[41e5c23b-7dc7-4d48-8792-6d1f6910c7ec] succeeded in 0.24040627600015796s: None