[aur-dev] [PATCH 1/4] Add sqlite3 schema for testing databases
The existing aur-schema.sql file is specific to MySQL, this patch adds a second schema file for use to create sqlite3 testing databases. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- schema/aur-schema-sqlite.sql | 368 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 schema/aur-schema-sqlite.sql diff --git a/schema/aur-schema-sqlite.sql b/schema/aur-schema-sqlite.sql new file mode 100644 index 0000000..5d655e9 --- /dev/null +++ b/schema/aur-schema-sqlite.sql @@ -0,0 +1,368 @@ +-- The SQLite database layout for the AUR. Certain data +-- is also included such as AccountTypes, etc. +-- + +-- Define the Account Types for the AUR. +-- +CREATE TABLE AccountTypes ( + ID TINYINT UNSIGNED NOT NULL, + AccountType VARCHAR(32) NOT NULL DEFAULT '', + PRIMARY KEY (ID) +); +INSERT INTO AccountTypes (ID, AccountType) VALUES (1, 'User'); +INSERT INTO AccountTypes (ID, AccountType) VALUES (2, 'Trusted User'); +INSERT INTO AccountTypes (ID, AccountType) VALUES (3, 'Developer'); +INSERT INTO AccountTypes (ID, AccountType) VALUES (4, 'Trusted User & Developer'); + + +-- User information for each user regardless of type. +-- +CREATE TABLE Users ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + AccountTypeID TINYINT UNSIGNED NOT NULL DEFAULT 1, + Suspended TINYINT UNSIGNED NOT NULL DEFAULT 0, + Username VARCHAR(32) NOT NULL, + Email VARCHAR(254) NOT NULL, + HideEmail TINYINT UNSIGNED NOT NULL DEFAULT 0, + Passwd CHAR(32) NOT NULL, + Salt CHAR(32) NOT NULL DEFAULT '', + ResetKey CHAR(32) NOT NULL DEFAULT '', + RealName VARCHAR(64) NOT NULL DEFAULT '', + LangPreference VARCHAR(6) NOT NULL DEFAULT 'en', + Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC', + Homepage TEXT NULL DEFAULT NULL, + IRCNick VARCHAR(32) NOT NULL DEFAULT '', + PGPKey VARCHAR(40) NULL DEFAULT NULL, + LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, + LastLoginIPAddress VARCHAR(45) NULL DEFAULT NULL, + LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0, + LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL, + InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0, + RegistrationTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + CommentNotify TINYINT(1) NOT NULL DEFAULT 1, + UpdateNotify TINYINT(1) NOT NULL DEFAULT 0, + OwnershipNotify TINYINT(1) NOT NULL DEFAULT 1, + UNIQUE (Username), + UNIQUE (Email), + FOREIGN KEY (AccountTypeID) REFERENCES AccountTypes(ID) ON DELETE NO ACTION +); +CREATE INDEX UsersAccountTypeID ON Users (AccountTypeID); + + +-- SSH public keys used for the aurweb SSH/Git interface. +-- +CREATE TABLE SSHPubKeys ( + UserID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Fingerprint VARCHAR(44) NOT NULL, + PubKey VARCHAR(4096) NOT NULL, + FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE +); + + +-- Track Users logging in/out of AUR web site. +-- +CREATE TABLE Sessions ( + UsersID INTEGER NOT NULL, + SessionID CHAR(32) NOT NULL, + LastUpdateTS BIGINT UNSIGNED NOT NULL, + FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE, + UNIQUE (SessionID) +); + + +-- Information on package bases +-- +CREATE TABLE PackageBases ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Name VARCHAR(255) NOT NULL, + NumVotes INTEGER UNSIGNED NOT NULL DEFAULT 0, + Popularity DECIMAL(10,6) NOT NULL DEFAULT 0, + OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL, + FlaggerComment TEXT NOT NULL DEFAULT '', + SubmittedTS BIGINT UNSIGNED NOT NULL, + ModifiedTS BIGINT UNSIGNED NOT NULL, + FlaggerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- who flagged the package out-of-date? + SubmitterUID INTEGER UNSIGNED NULL DEFAULT NULL, -- who submitted it? + MaintainerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- User + PackagerUID INTEGER UNSIGNED NULL DEFAULT NULL, -- Last packager + UNIQUE (Name), + FOREIGN KEY (FlaggerUID) REFERENCES Users(ID) ON DELETE SET NULL, + -- deleting a user will cause packages to be orphaned, not deleted + FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (PackagerUID) REFERENCES Users(ID) ON DELETE SET NULL +); +CREATE INDEX BasesNumVotes ON PackageBases (NumVotes); +CREATE INDEX BasesSubmitterUID ON PackageBases (SubmitterUID); +CREATE INDEX BasesMaintainerUID ON PackageBases (MaintainerUID); +CREATE INDEX BasesPackagerUID ON PackageBases (PackagerUID); + + +-- Keywords of package bases +-- +CREATE TABLE PackageKeywords ( + PackageBaseID INTEGER UNSIGNED NOT NULL, + Keyword VARCHAR(255) NOT NULL DEFAULT '', + PRIMARY KEY (PackageBaseID, Keyword), + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE +); + + +-- Information about the actual packages +-- +CREATE TABLE Packages ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + PackageBaseID INTEGER UNSIGNED NOT NULL, + Name VARCHAR(255) NOT NULL, + Version VARCHAR(255) NOT NULL DEFAULT '', + Description VARCHAR(255) NULL DEFAULT NULL, + URL VARCHAR(8000) NULL DEFAULT NULL, + UNIQUE (Name), + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE +); + + +-- Information about licenses +-- +CREATE TABLE Licenses ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Name VARCHAR(255) NOT NULL, + UNIQUE (Name) +); + + +-- Information about package-license-relations +-- +CREATE TABLE PackageLicenses ( + PackageID INTEGER UNSIGNED NOT NULL, + LicenseID INTEGER UNSIGNED NOT NULL, + PRIMARY KEY (PackageID, LicenseID), + FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE, + FOREIGN KEY (LicenseID) REFERENCES Licenses(ID) ON DELETE CASCADE +); + + +-- Information about groups +-- +CREATE TABLE Groups ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Name VARCHAR(255) NOT NULL, + UNIQUE (Name) +); + + +-- Information about package-group-relations +-- +CREATE TABLE PackageGroups ( + PackageID INTEGER UNSIGNED NOT NULL, + GroupID INTEGER UNSIGNED NOT NULL, + PRIMARY KEY (PackageID, GroupID), + FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE, + FOREIGN KEY (GroupID) REFERENCES Groups(ID) ON DELETE CASCADE +); + + +-- Define the package dependency types +-- +CREATE TABLE DependencyTypes ( + ID TINYINT UNSIGNED NOT NULL, + Name VARCHAR(32) NOT NULL DEFAULT '', + PRIMARY KEY (ID) +); +INSERT INTO DependencyTypes VALUES (1, 'depends'); +INSERT INTO DependencyTypes VALUES (2, 'makedepends'); +INSERT INTO DependencyTypes VALUES (3, 'checkdepends'); +INSERT INTO DependencyTypes VALUES (4, 'optdepends'); + + +-- Track which dependencies a package has +-- +CREATE TABLE PackageDepends ( + PackageID INTEGER UNSIGNED NOT NULL, + DepTypeID TINYINT UNSIGNED NOT NULL, + DepName VARCHAR(255) NOT NULL, + DepCondition VARCHAR(255), + DepArch VARCHAR(255) NULL DEFAULT NULL, + FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE, + FOREIGN KEY (DepTypeID) REFERENCES DependencyTypes(ID) ON DELETE NO ACTION +); +CREATE INDEX DependsPackageID ON PackageDepends (PackageID); +CREATE INDEX DependsDepName ON PackageDepends (DepName); + + +-- Define the package relation types +-- +CREATE TABLE RelationTypes ( + ID TINYINT UNSIGNED NOT NULL, + Name VARCHAR(32) NOT NULL DEFAULT '', + PRIMARY KEY (ID) +); +INSERT INTO RelationTypes VALUES (1, 'conflicts'); +INSERT INTO RelationTypes VALUES (2, 'provides'); +INSERT INTO RelationTypes VALUES (3, 'replaces'); + + +-- Track which conflicts, provides and replaces a package has +-- +CREATE TABLE PackageRelations ( + PackageID INTEGER UNSIGNED NOT NULL, + RelTypeID TINYINT UNSIGNED NOT NULL, + RelName VARCHAR(255) NOT NULL, + RelCondition VARCHAR(255), + RelArch VARCHAR(255) NULL DEFAULT NULL, + FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE, + FOREIGN KEY (RelTypeID) REFERENCES RelationTypes(ID) ON DELETE NO ACTION +); +CREATE INDEX RelationsPackageID ON PackageRelations (PackageID); +CREATE INDEX RelationsRelName ON PackageRelations (RelName); + + +-- Track which sources a package has +-- +CREATE TABLE PackageSources ( + PackageID INTEGER UNSIGNED NOT NULL, + Source VARCHAR(8000) NOT NULL DEFAULT '/dev/null', + SourceArch VARCHAR(255) NULL DEFAULT NULL, + FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE +); +CREATE INDEX SourcesPackageID ON PackageSources (PackageID); + + +-- Track votes for packages +-- +CREATE TABLE PackageVotes ( + UsersID INTEGER UNSIGNED NOT NULL, + PackageBaseID INTEGER UNSIGNED NOT NULL, + VoteTS BIGINT UNSIGNED NULL DEFAULT NULL, + FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE, + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE +); +CREATE UNIQUE INDEX VoteUsersIDPackageID ON PackageVotes (UsersID, PackageBaseID); +CREATE INDEX VotesUsersID ON PackageVotes (UsersID); +CREATE INDEX VotesPackageBaseID ON PackageVotes (PackageBaseID); + +-- Record comments for packages +-- +CREATE TABLE PackageComments ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + PackageBaseID INTEGER UNSIGNED NOT NULL, + UsersID INTEGER UNSIGNED NULL DEFAULT NULL, + Comments TEXT NOT NULL DEFAULT '', + CommentTS BIGINT UNSIGNED NOT NULL DEFAULT 0, + EditedTS BIGINT UNSIGNED NULL DEFAULT NULL, + EditedUsersID INTEGER UNSIGNED NULL DEFAULT NULL, + DelTS BIGINT UNSIGNED NULL DEFAULT NULL, + DelUsersID INTEGER UNSIGNED NULL DEFAULT NULL, + PinnedTS BIGINT UNSIGNED NOT NULL DEFAULT 0, + FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (EditedUsersID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (DelUsersID) REFERENCES Users(ID) ON DELETE CASCADE, + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE +); +CREATE INDEX CommentsUsersID ON PackageComments (UsersID); +CREATE INDEX CommentsPackageBaseID ON PackageComments (PackageBaseID); + +-- Package base co-maintainers +-- +CREATE TABLE PackageComaintainers ( + UsersID INTEGER UNSIGNED NOT NULL, + PackageBaseID INTEGER UNSIGNED NOT NULL, + Priority INTEGER UNSIGNED NOT NULL, + FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE, + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE +); +CREATE INDEX ComaintainersUsersID ON PackageComaintainers (UsersID); +CREATE INDEX ComaintainersPackageBaseID ON PackageComaintainers (PackageBaseID); + +-- Package base notifications +-- +CREATE TABLE PackageNotifications ( + PackageBaseID INTEGER UNSIGNED NOT NULL, + UserID INTEGER UNSIGNED NOT NULL, + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE, + FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE +); +CREATE UNIQUE INDEX NotifyUserIDPkgID ON PackageNotifications (UserID, PackageBaseID); + +-- Package name blacklist +-- +CREATE TABLE PackageBlacklist ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Name VARCHAR(64) NOT NULL, + UNIQUE (Name) +); + +-- Providers in the official repositories +-- +CREATE TABLE OfficialProviders ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Name VARCHAR(64) NOT NULL, + Repo VARCHAR(64) NOT NULL, + Provides VARCHAR(64) NOT NULL +); +CREATE UNIQUE INDEX ProviderNameProvides ON OfficialProviders (Name, Provides); + +-- Define package request types +-- +CREATE TABLE RequestTypes ( + ID TINYINT UNSIGNED NOT NULL, + Name VARCHAR(32) NOT NULL DEFAULT '', + PRIMARY KEY (ID) +); +INSERT INTO RequestTypes VALUES (1, 'deletion'); +INSERT INTO RequestTypes VALUES (2, 'orphan'); +INSERT INTO RequestTypes VALUES (3, 'merge'); + +-- Package requests +-- +CREATE TABLE PackageRequests ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + ReqTypeID TINYINT UNSIGNED NOT NULL, + PackageBaseID INTEGER UNSIGNED NULL, + PackageBaseName VARCHAR(255) NOT NULL, + MergeBaseName VARCHAR(255) NULL, + UsersID INTEGER UNSIGNED NULL DEFAULT NULL, + Comments TEXT NOT NULL DEFAULT '', + ClosureComment TEXT NOT NULL DEFAULT '', + RequestTS BIGINT UNSIGNED NOT NULL DEFAULT 0, + Status TINYINT UNSIGNED NOT NULL DEFAULT 0, + FOREIGN KEY (ReqTypeID) REFERENCES RequestTypes(ID) ON DELETE NO ACTION, + FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE SET NULL +); +CREATE INDEX RequestsUsersID ON PackageRequests (UsersID); +CREATE INDEX RequestsPackageBaseID ON PackageRequests (PackageBaseID); + +-- Vote information +-- +CREATE TABLE IF NOT EXISTS TU_VoteInfo ( + ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + Agenda TEXT NOT NULL, + User VARCHAR(32) NOT NULL, + Submitted BIGINT UNSIGNED NOT NULL, + End BIGINT UNSIGNED NOT NULL, + Quorum DECIMAL(2, 2) NOT NULL, + SubmitterID INTEGER UNSIGNED NOT NULL, + Yes TINYINT UNSIGNED NOT NULL DEFAULT '0', + No TINYINT UNSIGNED NOT NULL DEFAULT '0', + Abstain TINYINT UNSIGNED NOT NULL DEFAULT '0', + ActiveTUs TINYINT UNSIGNED NOT NULL DEFAULT '0', + FOREIGN KEY (SubmitterID) REFERENCES Users(ID) ON DELETE CASCADE +); + +-- Individual vote records +-- +CREATE TABLE IF NOT EXISTS TU_Votes ( + VoteID INTEGER UNSIGNED NOT NULL, + UserID INTEGER UNSIGNED NOT NULL, + FOREIGN KEY (VoteID) REFERENCES TU_VoteInfo(ID) ON DELETE CASCADE, + FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE +); + +-- Malicious user banning +-- +CREATE TABLE Bans ( + IPAddress VARCHAR(45) NULL DEFAULT NULL, + BanTS TIMESTAMP NOT NULL, + PRIMARY KEY (IPAddress) +); -- 2.12.0
Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- schema/aur-schema.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index b75a257..9b4e1d2 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -230,7 +230,7 @@ CREATE INDEX RelationsRelName ON PackageRelations (RelName); -- CREATE TABLE PackageSources ( PackageID INTEGER UNSIGNED NOT NULL, - Source VARCHAR(8000) NOT NULL DEFAULT "/dev/null", + Source VARCHAR(8000) NOT NULL DEFAULT '/dev/null', SourceArch VARCHAR(255) NULL DEFAULT NULL, FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE ) ENGINE = InnoDB; -- 2.12.0
Sqlite3 does not support the MD5 function like MySQL does, instead of the database program hash the passwords, have Python's hashlib module do it instead. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- schema/gendummydata.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/schema/gendummydata.py b/schema/gendummydata.py index 9dd2f45..373f82e 100755 --- a/schema/gendummydata.py +++ b/schema/gendummydata.py @@ -9,6 +9,7 @@ usage: gendummydata.py outputfilename.sql # package names. It generates the SQL statements to # insert these users/packages into the AUR database. # +import hashlib import random import time import os @@ -170,9 +171,11 @@ for u in user_keys: # pass + h = hashlib.new('md5') + h.update(u.encode()); s = ("INSERT INTO Users (ID, AccountTypeID, Username, Email, Passwd)" - " VALUES (%d, %d, '%s', '%s@example.com', MD5('%s'));\n") - s = s % (seen_users[u], account_type, u, u, u) + " VALUES (%d, %d, '%s', '%s@example.com', '%s');\n") + s = s % (seen_users[u], account_type, u, u, h.hexdigest()) out.write(s) log.debug("Number of developers: %d" % len(developers)) @@ -202,9 +205,9 @@ for p in list(seen_pkgs.keys()): uuid = genUID() # the submitter/user - s = ("INSERT INTO PackageBases (ID, Name, SubmittedTS, " - "SubmitterUID, MaintainerUID, PackagerUID) VALUES (%d, '%s', %d, %d, %s, %s);\n") - s = s % (seen_pkgs[p], p, NOW, uuid, muid, puid) + s = ("INSERT INTO PackageBases (ID, Name, SubmittedTS, ModifiedTS, " + "SubmitterUID, MaintainerUID, PackagerUID) VALUES (%d, '%s', %d, %d, %d, %s, %s);\n") + s = s % (seen_pkgs[p], p, NOW, NOW, uuid, muid, puid) out.write(s) s = ("INSERT INTO Packages (ID, PackageBaseID, Name, Version) VALUES " @@ -303,7 +306,7 @@ for t in range(0, OPEN_PROPOSALS+CLOSE_PROPOSALS): user = user_keys[random.randrange(0,len(user_keys))] suid = trustedusers[random.randrange(0,len(trustedusers))] s = ("INSERT INTO TU_VoteInfo (Agenda, User, Submitted, End," - " SubmitterID) VALUES ('%s', '%s', %d, %d, %d);\n") + " Quorum, SubmitterID) VALUES ('%s', '%s', %d, %d, 0.0, %d);\n") s = s % (genFortune(), user, start, end, suid) out.write(s) count += 1 -- 2.12.0
On Wed, 01 Mar 2017 at 07:46:20, Mark Weiman wrote:
Sqlite3 does not support the MD5 function like MySQL does, instead of the database program hash the passwords, have Python's hashlib module do it instead.
Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- schema/gendummydata.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) [...]
As of commit 29a4870 (Use bcrypt to hash passwords, 2017-02-24), we are no longer hashing passwords with MD5. However, given that this is just "dummy data" and the generated passwords do not seem to be used anywhere, I am going to merge this to pu for now. We can still migrate the script to use bcrypt later.
Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- INSTALL | 8 ++++++++ TESTING | 31 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 TESTING diff --git a/INSTALL b/INSTALL index a472b27..8c9c4dd 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,14 @@ Setup on Arch Linux =================== +For testing aurweb patches before submission, you can use the instructions in +TESTING for testing the web interface only. + +Note that you can only do limited testing using the PHP built-in web server. +In particular, the cgit interface will be unusable as well as the ssh+git +interface. For a detailed description on how to setup a full aurweb server, +read the instructions below. + 1) Clone the aurweb project: $ cd /srv/http/ diff --git a/TESTING b/TESTING new file mode 100644 index 0000000..00a9e98 --- /dev/null +++ b/TESTING @@ -0,0 +1,31 @@ +Setup Testing Environment +========================= + +Note that this setup is only to test the web interface. If you need to have a +full aurweb instance with cgit, ssh interface, etc, follow the directions in +INSTALL. + +1) Clone the aurweb project: + + $ git clone git://git.archlinux.org/aurweb.git + +2) Install php and necessary modules: + + # pacman -S php php-sqlite sqlite + +3) Prepare the testing database: + + $ cd /path/to/aurweb/schema + $ ./gendummydata.py out.sql + $ sqlite3 ../aurweb.sqlite3 < aur-schema-sqlite.sql + $ sqlite3 ../aurweb.sqlite3 < out.sql + +4) Copy conf/config.proto to conf/config and adjust the configuration + (pay attention to disable_http_login, enable_maintenance and aur_location). + + Be sure to change backend to sqlite and name to the file location of your + created test database. + +5) Run PHP Command Line server + + $ AUR_CONFIG='/path/to/aurweb/conf/config' php -S localhost:8080 -t /path/to/aurweb/web/html -- 2.12.0
On Wed, 01 Mar 2017 at 07:46:21, Mark Weiman wrote:
+Setup Testing Environment +========================= + +Note that this setup is only to test the web interface. If you need to have a +full aurweb instance with cgit, ssh interface, etc, follow the directions in +INSTALL. + +1) Clone the aurweb project: + + $ git clone git://git.archlinux.org/aurweb.git + +2) Install php and necessary modules: + + # pacman -S php php-sqlite sqlite + +3) Prepare the testing database: + + $ cd /path/to/aurweb/schema
This needs to be updated to work with the two patches I just submitted. An additional $ make should be sufficient.
+ $ ./gendummydata.py out.sql + $ sqlite3 ../aurweb.sqlite3 < aur-schema-sqlite.sql + $ sqlite3 ../aurweb.sqlite3 < out.sql + +4) Copy conf/config.proto to conf/config and adjust the configuration + (pay attention to disable_http_login, enable_maintenance and aur_location). + + Be sure to change backend to sqlite and name to the file location of your + created test database. + +5) Run PHP Command Line server
Minor nit: I would change this line to "Run the PHP built-in web server" and also add a colon at the end. This looks great otherwise! It would be nice if you could fix this last sentence, add the additional `make` invocation and resubmit. In the meantime, I will queue patches two and three of this series in pu. Thanks!
+ + $ AUR_CONFIG='/path/to/aurweb/conf/config' php -S localhost:8080 -t /path/to/aurweb/web/html -- 2.12.0
Add instructions to test aurweb's web interface via the PHP built-in web server. Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- INSTALL | 8 ++++++++ TESTING | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 TESTING diff --git a/INSTALL b/INSTALL index a472b27..8c9c4dd 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,14 @@ Setup on Arch Linux =================== +For testing aurweb patches before submission, you can use the instructions in +TESTING for testing the web interface only. + +Note that you can only do limited testing using the PHP built-in web server. +In particular, the cgit interface will be unusable as well as the ssh+git +interface. For a detailed description on how to setup a full aurweb server, +read the instructions below. + 1) Clone the aurweb project: $ cd /srv/http/ diff --git a/TESTING b/TESTING new file mode 100644 index 0000000..760e5d2 --- /dev/null +++ b/TESTING @@ -0,0 +1,32 @@ +Setup Testing Environment +========================= + +Note that this setup is only to test the web interface. If you need to have a +full aurweb instance with cgit, ssh interface, etc, follow the directions in +INSTALL. + +1) Clone the aurweb project: + + $ git clone git://git.archlinux.org/aurweb.git + +2) Install php and necessary modules: + + # pacman -S php php-sqlite sqlite + +3) Prepare the testing database: + + $ cd /path/to/aurweb/schema + $ make + $ ./gendummydata.py out.sql + $ sqlite3 ../aurweb.sqlite3 < aur-schema-sqlite.sql + $ sqlite3 ../aurweb.sqlite3 < out.sql + +4) Copy conf/config.proto to conf/config and adjust the configuration + (pay attention to disable_http_login, enable_maintenance and aur_location). + + Be sure to change backend to sqlite and name to the file location of your + created test database. + +5) Run the PHP built-in web server + + $ AUR_CONFIG='/path/to/aurweb/conf/config' php -S localhost:8080 -t /path/to/aurweb/web/html -- 2.12.2
On Wed, 12 Apr 2017 at 06:56:16, Mark Weiman wrote:
Add instructions to test aurweb's web interface via the PHP built-in web server.
Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- INSTALL | 8 ++++++++ TESTING | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 TESTING [...]
Awesome. Queued, thanks!
On Wed, 01 Mar 2017 at 07:46:18, Mark Weiman wrote:
The existing aur-schema.sql file is specific to MySQL, this patch adds a second schema file for use to create sqlite3 testing databases.
Signed-off-by: Mark Weiman <mark.weiman@markzz.com> --- schema/aur-schema-sqlite.sql | 368 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 schema/aur-schema-sqlite.sql [...]
This makes it a bit more cumbersome to update the schema since having two independent schema files means that every database layout amendment must be done twice. I suggest creating this automatically instead, like we already do in the test suite; see the patches which I will send to the list in a minute.
participants (2)
-
Lukas Fleischer
-
Mark Weiman