Add a script to update the speed load test data when changes are made to how data...
[scpubgit/stemmatology.git] / t / bin / update-load-test.pl
diff --git a/t/bin/update-load-test.pl b/t/bin/update-load-test.pl
new file mode 100644 (file)
index 0000000..40e0e17
--- /dev/null
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use lib 'lib';
+
+use File::Temp;
+
+use Text::Tradition;
+use Text::Tradition::Directory;
+
+## We're loading the besoin data, and dumping the backend db rows into
+## a .sql file for load testing (testing of data loading, not the
+## other sort)
+my $sql = 't/data/speed_test_load.sql';
+my $uuid = 'load-test';
+
+print "Loading t/data/besoin.xml and storing it in $sql ...\n";
+
+## Load tradition data:
+my $tradition = Text::Tradition->new(
+   'input' => 'Self',
+   'file'  => "t/data/besoin.xml"
+);
+$tradition->add_stemma(dotfile => "t/data/besoin.dot");
+
+## save to db:
+my $fh = File::Temp->new();
+my $file = $fh->filename;
+$fh->close;
+
+my $dsn = "dbi:SQLite:$file";
+my $dir = Text::Tradition::Directory->new(
+    dsn => $dsn,
+    extra_args => { create => 1 },
+);
+my $scope = $dir->new_scope;
+$dir->store($uuid, $tradition);
+
+## out to SQL file:
+`sqlite3 $file ".dump" > $sql`;
+
+print "$sql updated,\n";
+
+=head1 NAME
+
+update-load-test.pl - Recreate the test file using for testing the speed of loading Traditions from a KiokuDB.
+
+=head1 USAGE
+
+    perl t/bin/update-load-test.pl
+
+This small script exists to enable an update of the test data for the
+speed tests in F<t/data/load-save-speed.t>. It loads the
+F<t/data/besoin.xml> test file and outputs the resulting database to
+F<t/data/speed_test_load.sql>.
+
+Only run this script after changes have been made to the way
+Traditions data is stored in the database.
+
+