Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-41402

Automate large site generation for testing

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.6
    • Fix Version/s: 2.6
    • Component/s: Performance
    • Labels:
    • Testing Instructions:
      Hide
      1. Run the courses generator to ensure there are no regressions
        1. cd /moodle/dirroot
        2. *php admin/tool/generator/cli/maketestcourse.php --size="S" --shortname="whatever_1"
        3. A new course with shortname whatever_1 SHOULD be created and you SHOULD see quite a few outputs in the CLI
        4. Run maketestcourse.php (same command as described above) but now with the --quiet option and changing the --shortname option's value
        5. A new course with shortname "whateveryouused" SHOULD be created and you SHOULD NOT see outputs in the CLI
        6. Use the web interface to create a new course accessing admin/tool/generator/maketestcourse.php being logged as an admin (or Site administration -> Development -> Make test course)
        7. A new course SHOULD be created and you SHOULD NOT see any error
      1. Run the site generator
        1. cd /moodle/dirroot/
        2. php admin/tool/generator/cli/maketestsite.php --size="XS"
        3. There SHOULD be 3 new courses, two with name Test course: XS and another one with name Test course: S
        4. Check the new Test course: S course's contents, the page activities SHOULD be spread across all sections or most of them (is random)
        5. php admin/tool/generator/cli/maketestsite.php --size="XS" --fixeddataset
        6. There SHOULD be 3 new courses, two with name Test course: XS and another one with name Test course: S
        7. Check the new Test course: S course's contents, the page activities SHOULD be in the first topic's section
        8. php admin/tool/generator/cli/maketestsite.php --size="XS" --quiet
        9. You SHOULD NOT see any output in the CLI
        10. There SHOULD be 3 new courses, two with name Test course: XS and another one with name Test course: S
        11. php admin/tool/generator/cli/maketestsite.php --size="S"
        12. There SHOULD be 12 new courses, 8 with name Test course: XS and 4 with name Test course: S
      Show
      Run the courses generator to ensure there are no regressions cd /moodle/dirroot *php admin/tool/generator/cli/maketestcourse.php --size="S" --shortname="whatever_1" A new course with shortname whatever_1 SHOULD be created and you SHOULD see quite a few outputs in the CLI Run maketestcourse.php (same command as described above) but now with the --quiet option and changing the --shortname option's value A new course with shortname "whateveryouused" SHOULD be created and you SHOULD NOT see outputs in the CLI Use the web interface to create a new course accessing admin/tool/generator/maketestcourse.php being logged as an admin (or Site administration -> Development -> Make test course) A new course SHOULD be created and you SHOULD NOT see any error Run the site generator cd /moodle/dirroot/ php admin/tool/generator/cli/maketestsite.php --size="XS" There SHOULD be 3 new courses, two with name Test course: XS and another one with name Test course: S Check the new Test course: S course's contents, the page activities SHOULD be spread across all sections or most of them (is random) php admin/tool/generator/cli/maketestsite.php --size="XS" --fixeddataset There SHOULD be 3 new courses, two with name Test course: XS and another one with name Test course: S Check the new Test course: S course's contents, the page activities SHOULD be in the first topic's section php admin/tool/generator/cli/maketestsite.php --size="XS" --quiet You SHOULD NOT see any output in the CLI There SHOULD be 3 new courses, two with name Test course: XS and another one with name Test course: S php admin/tool/generator/cli/maketestsite.php --size="S" There SHOULD be 12 new courses, 8 with name Test course: XS and 4 with name Test course: S
    • Affected Branches:
      MOODLE_26_STABLE
    • Fixed Branches:
      MOODLE_26_STABLE
    • Pull from Repository:
    • Pull Master Branch:
      MDL-41402_master

      Description

      Following MDL-38197 which generates a test course we can generate a big test site with many courses, users, enrolments and module instances

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              Hide
              dmonllao David Monllaó added a comment -

              I wanted to add unit tests for this but would be hard AFAIK, as tool_generator_site_backend::make() is executing system calls which probably is not good when running unit tests.

              Show
              dmonllao David Monllaó added a comment - I wanted to add unit tests for this but would be hard AFAIK, as tool_generator_site_backend::make() is executing system calls which probably is not good when running unit tests.
              Hide
              dmonllao David Monllaó added a comment -

              grrrr, working in MDL-41421 I realized that size_for_name() should belong to backend class...

              Note for PR: Updating patch with this single change

              Show
              dmonllao David Monllaó added a comment - grrrr, working in MDL-41421 I realized that size_for_name() should belong to backend class... Note for PR: Updating patch with this single change
              Hide
              fred Frédéric Massart added a comment -

              Hi David,

              Abstract

              1. L79 You don't need global $CFG

              Course

              1. L126 I don't like this function... it looks super hacky. I know, you didn't introduce it.

              Site

              1. L38 Could you add some more PHP Doc to $sitecourses so that it is more readable? What is XS, etc...
              2. L84 I still don't like that function lol. Should it use shortsize_ by the way?
              3. L145 If you say that this is the right way, I accept it, but it looks strange to me to call a CLI. In any case, could you add a lock in the API itself that ensures that we are in CLI_SCRIPT. That will prevent some developers to do silly things I guess.
              4. L189 Do you need the % before the string?

              CLI

              1. Use _DIR_ instead of dirname(_FILE_)
              2. L69 Use $CFG->debugdeveloper instead of debugging('', DEBUG_DEVELOPER);

              Overall looks good, thanks David!

              Cheers,
              Fred

              Show
              fred Frédéric Massart added a comment - Hi David, Abstract L79 You don't need global $CFG Course L126 I don't like this function... it looks super hacky. I know, you didn't introduce it. Site L38 Could you add some more PHP Doc to $sitecourses so that it is more readable? What is XS, etc... L84 I still don't like that function lol. Should it use shortsize_ by the way? L145 If you say that this is the right way, I accept it, but it looks strange to me to call a CLI. In any case, could you add a lock in the API itself that ensures that we are in CLI_SCRIPT. That will prevent some developers to do silly things I guess. L189 Do you need the % before the string? CLI Use _ DIR _ instead of dirname(_ FILE _) L69 Use $CFG->debugdeveloper instead of debugging('', DEBUG_DEVELOPER); Overall looks good, thanks David! Cheers, Fred
              Hide
              dmonllao David Monllaó added a comment -

              Thanks Fred, I changed most of what you commented about, just kept get_size_choices() as it was, it does his job and the name is appropiate according to it (to get a dropdown menu options) but, in fact, it was never used as there is no web interface for this feature is used by the other two features with web interface; now it is being used in the CLI command help message with a warning about how much data can this tool generate.

              Show
              dmonllao David Monllaó added a comment - Thanks Fred, I changed most of what you commented about, just kept get_size_choices() as it was, it does his job and the name is appropiate according to it (to get a dropdown menu options) but, in fact, it was never used as there is no web interface for this feature is used by the other two features with web interface; now it is being used in the CLI command help message with a warning about how much data can this tool generate.
              Hide
              dmonllao David Monllaó added a comment -

              I haven't changed the tool_plugin version, I see that, as there are new language strings, we need to purge cache otherwise we see a debugging message about an unexisting text string and the autoloader reports it as a

              Fatal error: Class 'tool_generator_site_backend' not found in /home/davidm/Desktop/moodlecode/master/admin/tool/generator/cli/maketestsite.php on line 45

              Show
              dmonllao David Monllaó added a comment - I haven't changed the tool_plugin version, I see that, as there are new language strings, we need to purge cache otherwise we see a debugging message about an unexisting text string and the autoloader reports it as a Fatal error: Class 'tool_generator_site_backend' not found in /home/davidm/Desktop/moodlecode/master/admin/tool/generator/cli/maketestsite.php on line 45
              Hide
              poltawski Dan Poltawski added a comment -

              Thanks David - i've integrated it to master

              Show
              poltawski Dan Poltawski added a comment - Thanks David - i've integrated it to master
              Hide
              abgreeve Adrian Greeve added a comment -

              I followed all of the instructions and the output was exactly as described.
              No problems found.
              Test passed.

              Show
              abgreeve Adrian Greeve added a comment - I followed all of the instructions and the output was exactly as described. No problems found. Test passed.
              Hide
              poltawski Dan Poltawski added a comment -

              Congratulations! This change has been integrated upstream and is now available from our git and download mirrors. To celebrate, here is a joke:

              A SQL query goes into a bar, walks up to two tables and asks, "Can I join you?"

              Show
              poltawski Dan Poltawski added a comment - Congratulations! This change has been integrated upstream and is now available from our git and download mirrors. To celebrate, here is a joke: A SQL query goes into a bar, walks up to two tables and asks, "Can I join you?"

                People

                • Votes:
                  0 Vote for this issue
                  Watchers:
                  5 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    18/Nov/13