From 989d419d5f04825460098cf46fffaac85feef88b Mon Sep 17 00:00:00 2001
From: Agustin Moyano <agustinmoyano@theke.io>
Date: Tue, 3 Dec 2019 23:12:00 -0300
Subject: [PATCH] Bug 23571: [DO NOT PUSH] crash condition builder

This patch adds t/db_dependent/bug_23571_crash_condition_builder.t file
This file is not intended to be part of Koha, but it's used to emulate crash conditions.
It will create 5000 users, 5000 biblios with 2 items each, and each item issued to a user.
It really takes a lot of time, so please be zen about it ;)

To use it execute
prove t/db_dependent/bug_23571_crash_condition_builder.t

Sponsored-by: Orex Digital
---
 .../bug_23571_crash_condition_builder.t       | 58 +++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 t/db_dependent/bug_23571_crash_condition_builder.t

diff --git a/t/db_dependent/bug_23571_crash_condition_builder.t b/t/db_dependent/bug_23571_crash_condition_builder.t
new file mode 100644
index 0000000000..c7882e0ebc
--- /dev/null
+++ b/t/db_dependent/bug_23571_crash_condition_builder.t
@@ -0,0 +1,58 @@
+#
+# WARNING!!!!!
+# THIS FILE SHOULD NOT BE A PART OF KOHA, AND IF YOU WON'T TEST BUG 23571 YOU SHOULD NOT USE IT
+# THIS FILE IS CREATED TO FILL DATABASE WITH USERS, BIBLIOS, ITEMS AND ISSUES
+# YOUR DATABASE MAY END CORRUPTED
+# PLEASE USE IT ON TEST / DEVELOPMENT DATABASE
+#
+
+use Modern::Perl;
+
+use Test::More tests => 1;
+
+use t::lib::TestBuilder;
+use t::lib::Mocks;
+
+use Koha::Database;
+
+use C4::Circulation;
+
+#use Data::Printer colored => 1;
+
+subtest "create 5000 patrons, 5000 biblios, 10000 items and 10000 issues" => sub {
+    plan tests => 1;
+    ok(1, 'Everything is wondeful!');
+    my $me = 'parent';
+    if(my $pid = fork) {
+    } elsif (defined $pid) {
+        $me = 'child';
+    } else {
+        # fork failed, so exit immediately
+        # fork failed, so exit immediately
+        warn "fork failed while attempting to run offline_circ/process_koc.pl as a background job";
+        exit 0;
+    }
+    
+    my $builder = t::lib::TestBuilder->new;
+
+    my $library = $builder->build( { source => 'Branch' } );
+
+    t::lib::Mocks::mock_userenv({ branchcode => $library->{branchcode} });
+
+    my $count = 2500;
+    while($count-- >= 0) {
+        warn "\n$me: $count loops to go, ".($count > 1250?"grab a cup of tea":"refill tea")."\n";
+        my $patron = $builder->build({ source => 'Borrower' });
+        #p($patron);
+        my $biblio = $builder->build_sample_biblio;
+        my $item1   = $builder->build_sample_item({
+            biblionumber => $biblio->biblionumber,
+        });
+        my $item2   = $builder->build_sample_item({
+            biblionumber => $biblio->biblionumber,
+        });
+        C4::Circulation::AddIssue( $patron, $item1->barcode );
+        C4::Circulation::AddIssue( $patron, $item2->barcode );
+    }
+    
+}
\ No newline at end of file
-- 
2.17.1