[GSoC] Summery of pg performance farm

2018-08-19 Thread Hongyuan Ma
Hello monters and hackers,

This is a late summary of pg performance farm in gsoc. Although it is not
yet perfect, but it has began to take shape.

1. The implementation of the basic test results upload interface to ensure
that the upload operation for the atomic level (including different client
numbers in different modes (rw, ro) corresponding to the results of the
value).

2. Implementation of the data report related to the list page. Compare each
metrics whith the previous results. If any of the metrics are a 5%
improvement( or regression),  there is one aspect that is progressive (or
regressive). This means there may be aspects of "improvement", "regression"
and "status quo" in one test result.This is the report List page for an
example: http://140.211.168.111/#/machineInfo/pmJEjJjSk3WREM3Q

3.The details page of the test report is implemented.  The test results in
the "read only" and "read & write" mode of this report are detailed in this
page, as well as the link of  previous report and other details.
Here is an example:
http://140.211.168.111/#/detailInfo/KScN58FCUWRD2fuC2R7VeY

4. A simple user center was implemented to allow users to browse the owning
machine and apply for a new machine (I originally planned to access the
community's user information interface at logon verification, but this
seems to require some waiting...So this part is temporarily not present.)
5. Implement the action of approvaling machine and sending notification
email in django admin.

We plan to add some useful features and write test cases to pg performance
farm in the future. If anyone has any good ideas or opinions. Please feel
free to email my mentors and me. And You are also welcome to  leave a
message  on this issue page: https://github.com/PGPerfFarm/pgperffarm/issues


Best Regards,
Hongyuan Ma


[GSoC] Summery of pg performance farm

2018-08-18 Thread Hongyuan Ma
Hello hackers,

This is a late summary of pg performance farm in gsoc. Although it is not
yet perfect, but it has began to take shape.

1. The implementation of the basic test results upload interface to ensure
that the upload operation for the atomic level (including different client
numbers in different modes (rw, ro) corresponding to the results of the
value).

2. Implementation of the data report related to the list page. Compare each
metrics whith the previous results. If any of the metrics are a 5%
improvement( or regression),  there is one aspect that is progressive (or
regressive). This means there may be aspects of "improvement", "regression"
and "status quo" in one test result.This is the report List page for an
example: http://140.211.168.111/#/machineInfo/pmJEjJjSk3WREM3Q

3.The details page of the test report is implemented.  The test results in
the "read only" and "read & write" mode of this report are detailed in this
page, as well as the link of  previous report and other details.
Here is an example:
http://140.211.168.111/#/detailInfo/KScN58FCUWRD2fuC2R7VeY

4. A simple user center was implemented to allow users to browse the owning
machine and apply for a new machine (I originally planned to access the
community's user information interface at logon verification, but this
seems to require some waiting...So this part is temporarily not present.)
5. Implement the action of approvaling machine and sending notification
email in django admin.

We plan to add some useful features and write test cases to pg performance
farm in the future. If anyone has any good ideas or opinions. Please feel
free to email my mentors (cc'ed) and me. And You are also welcome to  leave
a message  on this issue page:
https://github.com/PGPerfFarm/pgperffarm/issues

Best Regards,
Hongyuan Ma


[GSOC 18] Perf Farm——Description of patch

2018-03-17 Thread Hongyuan Ma
Hi,
This email is a description of 0001-add-apps-directory.patch.
In this patch, I created the apps directory and created two applications, 
test_item and user_operation.
The test_item application model classes are: TestBranch, TestItem
The model classes in the user_operation application are: Alias, UserMachine, 
TestResult


The relationship between User and UserMachine is 1 : m
The relationship between TestResult and UserMachine is: n : 1
The relationship between TestItem and TestResult is 1 : m


I also created the db_tools directory. The scripts in this directory make it 
easy for developers to import simulation data during development.


Here are some of my ideas:
Since django-rest-framework does not support django 1.8, I am anxious that in 
the next patch, I can upgrade the Django version to the TLS version, which is 
now 1.11.


I'm not sure if there is an existing alias database. If not, maybe I should 
write a web crawler that collects aliases (such as plants‘ names) from web 
pages (https://en.wikipedia.org/wiki/List_of_garden_plants).


In addition, can you please provide PGAUTH_REDIRECT and PGAUTH_KEY constants 
for use in development. I plan to change the return type of the auth module to 
json format.

[PATCH] add apps directory; add model classes; add db_tools directory;

2018-03-16 Thread Hongyuan Ma
---
 .gitignore  |   2 ++
 web/apps/__init__.py|   0
 web/apps/test_item/__init__.py  |   0
 web/apps/test_item/admin.py |   3 ++
 web/apps/test_item/models.py|  35 +++
 web/apps/test_item/tests.py |   3 ++
 web/apps/test_item/views.py |   3 ++
 web/apps/user_operation/__init__.py |   0
 web/apps/user_operation/admin.py|   3 ++
 web/apps/user_operation/models.py   |  58 
 web/apps/user_operation/tests.py|   3 ++
 web/apps/user_operation/views.py|   3 ++
 web/db.sqlite3  | Bin 0 -> 50176 bytes
 web/db_tools/data/__init__.py   |   0
 web/db_tools/data/test_branch_date.py   |  11 ++
 web/db_tools/import_test_branch_data.py |  22 
 web/pgperffarm/settings.py  |   8 -
 web/pgperffarm/urls.py  |   2 +-
 18 files changed, 154 insertions(+), 2 deletions(-)
 create mode 100644 web/apps/__init__.py
 create mode 100644 web/apps/test_item/__init__.py
 create mode 100644 web/apps/test_item/admin.py
 create mode 100644 web/apps/test_item/models.py
 create mode 100644 web/apps/test_item/tests.py
 create mode 100644 web/apps/test_item/views.py
 create mode 100644 web/apps/user_operation/__init__.py
 create mode 100644 web/apps/user_operation/admin.py
 create mode 100644 web/apps/user_operation/models.py
 create mode 100644 web/apps/user_operation/tests.py
 create mode 100644 web/apps/user_operation/views.py
 create mode 100644 web/db.sqlite3
 create mode 100644 web/db_tools/data/__init__.py
 create mode 100644 web/db_tools/data/test_branch_date.py
 create mode 100644 web/db_tools/import_test_branch_data.py

diff --git a/.gitignore b/.gitignore
index 239c691..f6dc301 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@ migrations
 *.psp
 .DS_Store
 tags
+
+.idea
\ No newline at end of file
diff --git a/web/apps/__init__.py b/web/apps/__init__.py
new file mode 100644
index 000..e69de29
diff --git a/web/apps/test_item/__init__.py b/web/apps/test_item/__init__.py
new file mode 100644
index 000..e69de29
diff --git a/web/apps/test_item/admin.py b/web/apps/test_item/admin.py
new file mode 100644
index 000..8c38f3f
--- /dev/null
+++ b/web/apps/test_item/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/web/apps/test_item/models.py b/web/apps/test_item/models.py
new file mode 100644
index 000..428dc0b
--- /dev/null
+++ b/web/apps/test_item/models.py
@@ -0,0 +1,35 @@
+from datetime import datetime
+
+from django.db import models
+
+# Create your models here.
+class TestBranch(models.Model):
+"""
+test brand
+"""
+branch_name = models.CharField(max_length=128, verbose_name="branch name", 
help_text="branch name")
+add_time = models.DateTimeField(default=datetime.now, verbose_name="branch 
added time", help_text="branch added time")
+
+class Meta:
+verbose_name = "test branch"
+verbose_name_plural = "test branch"
+
+def __str__(self):
+return self.branch_name
+
+class TestItem(models.Model):
+"""
+test_item
+"""
+test_name = models.CharField(max_length=128, verbose_name="test name", 
help_text="test name")
+test_desc = models.TextField(verbose_name="test desc", help_text="test 
desc")
+test_metric = models.DecimalField(max_digits=10, decimal_places=2, 
verbose_name="test metric", help_text="score>metric means 
improving;score<=metric means declining;")
+test_branch = models.ForeignKey(TestBranch ,verbose_name="test branch", 
help_text="test branch")
+add_time = models.DateTimeField(default=datetime.now, verbose_name="test 
added time")
+
+class Meta:
+verbose_name = "test_item"
+verbose_name_plural = "test_item"
+
+def __str__(self):
+return self.test_name
diff --git a/web/apps/test_item/tests.py b/web/apps/test_item/tests.py
new file mode 100644
index 000..a6019d6
--- /dev/null
+++ b/web/apps/test_item/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your test_item here.
diff --git a/web/apps/test_item/views.py b/web/apps/test_item/views.py
new file mode 100644
index 000..91ea44a
--- /dev/null
+++ b/web/apps/test_item/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/web/apps/user_operation/__init__.py 
b/web/apps/user_operation/__init__.py
new file mode 100644
index 000..e69de29
diff --git a/web/apps/user_operation/admin.py b/web/apps/user_operation/admin.py
new file mode 100644
index 000..8c38f3f
--- /dev/null
+++ b/web/apps/user_operation/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/web/apps/user_operation/models.py 
b/web/apps/user_operation/models.py
new file mode 100644
index 000..ca426f1
--- /dev/null
+++ b/web/apps/user_operati

Re:Re: Re: [GSOC 18] Performance Farm Project——Initialization Project

2018-03-13 Thread Hongyuan Ma
Hi Dave,
I am willing to use React to re-create the front-end application. Since I plan 
to use separate front-end and back-end development methods, this means that 
there will be no html files in Django applications. Front-end and back-end 
applications will interact via restful api. I will use react to rewrite some 
existing html files if needed. Before initializing the react application, I 
want to learn more about your tendency toward front-end technology.

 - About React: Which version of React (15.x or 16) and react-router (2.x or 4) 
do you tend to use?
 - About Package Manager: Do you tend to use yarn or npm?
 - About the UI library: I guess you might prefer Bootstrap or Material-UI.

At the same time I hope you can help me understand the functional requirements 
of this project more clearly. Here are some of my thoughts on PerfFarm:

 - I see this comment in the client folder (In line 15 of the "pgperffarm \ 
client \ benchmarks \ pgbench.py" file):
'''
# TODO allow running custom scripts, not just the default
'''
Will PerfFarm have many test items so that the test item search function or 
even the test item sort function is expected to be provided?
 
 - What value will be used to determine if a machine's performance is improving 
or declining?
 - After the user logs in to the site, I think it may be necessary to provide a 
page for the user to browse or manage his own machine. Is there any function 
that requires users to log in before they can use it?
 - When I registered a machine on BuildFarm, I did not receive the confirmation 
email immediately but several days later. In PerfFarm, when a user registers a 
machine, will the administrator review it before sending a confirmation email?
 - I see BuildFarm assigning an animal name to each registered machine. Will 
PerfFarm also have this interesting feature?

My postgresql.org community account is:
 - Username: maleicacid
 - Email: cs_maleica...@163.com

I hope to get the commit permission of the pgperffarm.git repository. I am 
willing to continue coding and complete the project on the existing 
code.Looking forward to your reply.

Best Regards,
Hongyuan Ma (cs_maleica...@163.com)


At 2018-03-13 03:03:08, "Dave Page"  wrote:

Hi


On Mon, Mar 12, 2018 at 9:57 AM, Hongyuan Ma  wrote:

Hi Dave,
Thank you for your reminder. This is indeed my negligence.
In fact, I have browsed the code in the pgperffarm.git repository, including 
the client folder and the web folder. However, I found that the web folder has 
some unfinished html files and does not contain model class files. And the 
project used Django 1.8 without importing the Django REST Framework (When I 
talked to Mark about the PerfFarm project, he told me he insisted on using 
Django 1.11 and considered using the REST framework). So I mistakenly thought 
that the code in the web folder had been shelved.


Nope, not at all. It just wasn't updated to meet the latest PG infrastructure 
requirements yet (basically just the update to Django 11). The rest should be 
fine as-is.
 


In the newly initialized Django application, I upgraded its version and 
assigned the directory to make the project structure clearer. I want to use a 
separate front-end development approach (The front-end applications will use 
vue.js for programming.). I hope you can allow me to use it instead of the old 
one. I am willing to integrate the auth module into this new application as 
soon as possible.


I would much prefer to see jQuery + React, purely because there are likely more 
PostgreSQL developers (particularly from the pgAdmin team) that know those 
technologies. It is important to consider long term maintenance as well as ease 
of initial development with any project.


Thanks.






Regards,
Hongyuan Ma (cs_maleica...@163.com) 

在 2018-03-12 02:26:43,"Dave Page"  写道:
Hi


Maybe I’m missing something (I’ve been offline a lot recently for unavoidable 
reasons), but the perf farm project already has a Django backend initialised 
and configured to work with community auth, on community infrastructure.


https://git.postgresql.org/gitweb/?p=pgperffarm.git;a=summary

On Sunday, March 11, 2018, Hongyuan Ma  wrote:

Hello, mark
I initialized a Django project and imported the Django REST Framework. Its 
github address is: https://github.com/PGPerfFarm/server-code
I created some model classes and also wrote scripts in the dbtools folder to 
import simulation data for development. I am hesitant to use admin or xadmin as 
the administrator's backend for the site (I prefer to use xadmin).


I also initialized the website's front-end application. Here is its address: 
https://github.com/PGPerfFarm/front-end-code.git
I wrote the header component as shown:


I hope this effect can enhance the future user experience:).
This application uses vue.js and element-ui, but if you insist on using other 
js libraries or not using js, please let me know. 

Re:Google Summer of Code: Potential Applicant

2018-03-12 Thread Hongyuan Ma
Hi,


Maybe you can try searching for the name of the tutor for the item you are 
interested in on this page below.


https://www.postgresql.org/list/pgsql-hackers/


Then you can find the email address of the tutor you want to contact, and then 
share your thoughts with him.
It is exactly what I have done. Hope it can help you.


Regards,
Hongyuan Ma (cs_maleica...@163.com) 





At 2018-03-12 21:48:21, "Christos Maris"  wrote:

Hey there,


My name is Christos (Chris for short) and I would love to work with you via the 
GSoC program this summer.


I am sending this mail because I am in a need for some instructions on how to 
find a mentor and a project to work on.


Can anyone help me with that? Also is there any potential mentor here?


Any info helps.


Thanks a lot in advance!

Re:Re: [GSOC 18] Performance Farm Project——Initialization Project

2018-03-12 Thread Hongyuan Ma
Hi Dave,
Thank you for your reminder. This is indeed my negligence.
In fact, I have browsed the code in the pgperffarm.git repository, including 
the client folder and the web folder. However, I found that the web folder has 
some unfinished html files and does not contain model class files. And the 
project used Django 1.8 without importing the Django REST Framework (When I 
talked to Mark about the PerfFarm project, he told me he insisted on using 
Django 1.11 and considered using the REST framework). So I mistakenly thought 
that the code in the web folder had been shelved.


In the newly initialized Django application, I upgraded its version and 
assigned the directory to make the project structure clearer. I want to use a 
separate front-end development approach (The front-end applications will use 
vue.js for programming.). I hope you can allow me to use it instead of the old 
one. I am willing to integrate the auth module into this new application as 
soon as possible.




Regards,
Hongyuan Ma (cs_maleica...@163.com) 

在 2018-03-12 02:26:43,"Dave Page"  写道:
Hi


Maybe I’m missing something (I’ve been offline a lot recently for unavoidable 
reasons), but the perf farm project already has a Django backend initialised 
and configured to work with community auth, on community infrastructure.


https://git.postgresql.org/gitweb/?p=pgperffarm.git;a=summary

On Sunday, March 11, 2018, Hongyuan Ma  wrote:

Hello, mark
I initialized a Django project and imported the Django REST Framework. Its 
github address is: https://github.com/PGPerfFarm/server-code
I created some model classes and also wrote scripts in the dbtools folder to 
import simulation data for development. I am hesitant to use admin or xadmin as 
the administrator's backend for the site (I prefer to use xadmin).


I also initialized the website's front-end application. Here is its address: 
https://github.com/PGPerfFarm/front-end-code.git
I wrote the header component as shown:


I hope this effect can enhance the future user experience:).
This application uses vue.js and element-ui, but if you insist on using other 
js libraries or not using js, please let me know. I will empty this project and 
then rewrite it as you wish.


My next step is to determine the necessary api interface and the corresponding 
components of the front-end application. Then implement them one by one.
Finally, as you can see, I created an organization named PGPerfFarm on github 
without permission. I sent you an invitation letter, and after you join, I am 
willing to hand over the administrator of the organization to you.




Regards,
Hongyuan Ma (cs_maleica...@163.com) 




 



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



[GSOC 18] Performance Farm Project——Initialization Project

2018-03-11 Thread Hongyuan Ma
Hello, mark
I initialized a Django project and imported the Django REST Framework. Its 
github address is: https://github.com/PGPerfFarm/server-code
I created some model classes and also wrote scripts in the dbtools folder to 
import simulation data for development. I am hesitant to use admin or xadmin as 
the administrator's backend for the site (I prefer to use xadmin).


I also initialized the website's front-end application. Here is its address: 
https://github.com/PGPerfFarm/front-end-code.git
I wrote the header component as shown:


I hope this effect can enhance the future user experience:).
This application uses vue.js and element-ui, but if you insist on using other 
js libraries or not using js, please let me know. I will empty this project and 
then rewrite it as you wish.


My next step is to determine the necessary api interface and the corresponding 
components of the front-end application. Then implement them one by one.
Finally, as you can see, I created an organization named PGPerfFarm on github 
without permission. I sent you an invitation letter, and after you join, I am 
willing to hand over the administrator of the organization to you.




Regards,
Hongyuan Ma (cs_maleica...@163.com) 

Re:Re: [GSOC 18] Performance Farm Project

2018-03-02 Thread Hongyuan Ma
Hi Robert,
Thanks for your advice! I agree very much with you. It is necessary to analyze 
and determine its functional requirements before developing a website. 
Hopefully in the exchange with Mr. Wong, we can discuss the function of this 
website as detail as possible.


I see the Build Farm project seems to use perl script to upload data to the 
site. I guess the Performance Farm project may also use a similar script 
(Although I am not familiar with perl, I would like to learn it if needed). I 
think that after discussing the functional requirements, we can gradually 
determine the data table structure, data format and web interface. In my 
imagination, the perl script just needs to send the request in the format of 
the web interface, and the web application can receive the data it sends.


Last but not least, I promise that if I write the code for this project, I will 
only use the famous frameworks and libraries. I will not look for semi-finished 
products and then modify or improve it.




Regards,
Hongyuan Ma (cs_maleica...@163.com)