mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-14 08:11:00 +00:00
Merge remote-tracking branch 'server/master'
This commit is contained in:
commit
322ccedaf4
3 files changed
+114
-10
No files matched your search
+36
-9
@@ -4,11 +4,17 @@
|
||||
|
||||
## Quickstart
|
||||
|
||||
#### Servers
|
||||
|
||||
- Web Server: ec2-54-229-94-254.eu-west-1.compute.amazonaws.com
|
||||
- Database and Queue Server: 172.31.25.253
|
||||
|
||||
#### Starting an instance
|
||||
|
||||
- Which instance type to choose:
|
||||
- Archive: m2.2xlarge
|
||||
- Live: c1.xlarge
|
||||
|
||||
- Using a release, set the following in the instance's user data:
|
||||
<pre>
|
||||
INSTALL_FROM_RELEASE=master-201311062138
|
||||
@@ -42,6 +48,11 @@ INSTALL_FROM_RELEASE=
|
||||
USE_ENVIRONMENT=
|
||||
</pre>
|
||||
|
||||
#### Receiving wind
|
||||
|
||||
- To receive and forward wind, log into webserver as user trac and switch to $HOME/udpmirror. Start the mirror and forward it to the instance you want.
|
||||
|
||||
|
||||
## Costs per month
|
||||
|
||||
To give you a feeling about the costs you can refer to the following table. To get all details go to http://www.awsnow.info/
|
||||
@@ -231,19 +242,35 @@ Amazon ELB is designed to handle unlimited concurrent requests per second with
|
||||
|
||||
## Migration Checklist
|
||||
|
||||
- fire up archive server and load it
|
||||
- configure 001-events.conf starting with a copy from old sapsailing.com
|
||||
- clone entire MongoDB content
|
||||
### Before switching sapsailing.com to the EC2 webserver
|
||||
- fire up archive server and load it (DONE)
|
||||
- configure 001-events.conf starting with a copy from old sapsailing.com, using test URLs (rombalur.de) (DONE)
|
||||
- clone entire MongoDB content (DONE)
|
||||
- migrate MySQL for Bugzilla
|
||||
- fetch all git branches; also sync gollum wiki git
|
||||
- ensure that all users have access; either solicit their public keys and enter to ~trac/.ssh/authorized_keys or migrate /etc/passwd and /etc/group settings for access to trac group
|
||||
- run test build and deploy
|
||||
- fire up a live server and test it
|
||||
- check that tmux with UDP mirror and SwissTiming StoreAndForward is running
|
||||
- ensure that all users have access; either solicit their public keys and enter to ~trac/.ssh/authorized_keys or migrate /etc/passwd and /etc/group settings for access to trac group (DONE)
|
||||
- run test build and deploy (DONE)
|
||||
- fire up a live server and test it (DONE)
|
||||
- fire up a replica and check that it works correctly (ERROR!)
|
||||
- check that UDP mirror is working (DONE)
|
||||
- check that SwissTiming StoreAndForward is working
|
||||
- check that we can fire up a live2 / archive2 server and switch transparently
|
||||
- check that sapsailing.com is entered everywhere a hostname / domain name is required
|
||||
|
||||
### Just before the migration on Sunday evening
|
||||
- check that sapsailing.com is entered everywhere a hostname / domain name is required, particularly in /etc/httpd/conf.d/001-events.conf and /opt/piwik-scripts and all of /etc - also have a look at piwik and bugzilla configuration (DONE)
|
||||
- disable bugzilla on old.sapsailing.com because Nameserver switch can take up to 48 hours for everyone (DONE)
|
||||
- copy /home/trac/releases to webserver (DONE)
|
||||
- import bugzilla to mysql (DONE)
|
||||
- git fetch --all on webserver (DONE)
|
||||
- tell SAP hostmaster to point old.sapsailing.com to 195.227.10.246
|
||||
|
||||
### Immediately after switching the sapsailing.com domain to the EC2 webserver on Sunday evening
|
||||
- check that old.sapsailing.com points to 195.227.10.246
|
||||
- check that EC2 web server is responding to sapsailing.com now
|
||||
- fetch all git branches from what is now old.sapsailing.com; also sync gollum wiki git
|
||||
- ask people (including internal Git team) to update their known_hosts files according to the new web server's key
|
||||
- check if build server can access new sapsailing.com
|
||||
- check why swisstiminglistener doesn't receive connections and fix
|
||||
|
||||
## Glossary
|
||||
|
||||
<table>
|
||||
|
||||
@@ -139,4 +139,12 @@ Max msgqueue size 819200 819200 bytes
|
||||
Max nice priority 0 0
|
||||
Max realtime priority 0 0
|
||||
Max realtime timeout unlimited unlimited us
|
||||
</pre>
|
||||
|
||||
### Show threads consuming most CPU time for a Java process
|
||||
|
||||
Assume that you want to know which threads exactly eat up all the CPU time. This can be done by using JConsole and the JTop plugin. You can download the plugin here `wget http://arnhem.luminis.eu/wp-content/uploads/2013/10/topthreads-1.1.jar`. The you can open jconsole like so:
|
||||
|
||||
<pre>
|
||||
/opt/jdk1.7.0_02/bin/jconsole -pluginpath topthreads-1.1.jar
|
||||
</pre>
|
||||
@@ -1,3 +1,5 @@
|
||||
# UI-Tests Tutorial
|
||||
|
||||
In this tutorial, we want to give a practical introduction in how to write UI-Tests with our framework and Selenium. You will learn to prepare your UI for testing as well as to write page objects and tests. For this reason, we write a small test which interacts with the administration console and the goal of the test is to verify the correct creation of a new event.
|
||||
|
||||
When you start to write UI tests, the first thing you have to do is, to ensure that the UI is testable. This means, that you have to be able to easily find all widgets in the final HTML-Document the user interacts with. The simplest approach here is to use debug identifiers which are provided by GWT and to assign an identifier to all important widgets, like buttons and text fields. Our framework contains a corresponding mechanism to lookup elements by the debug identifier, but more on this later.
|
||||
@@ -17,4 +19,71 @@ When you start to write UI tests, the first thing you have to do is, to ensure t
|
||||
}
|
||||
}
|
||||
|
||||
: Listing 1
|
||||
: Listing 1
|
||||
|
||||
public class EventCreateDialog extends EventDialog<EventDTO> {
|
||||
public EventCreateDialog(Collection<EventDTO> existingEvents, StringMessages stringConstants,
|
||||
DialogCallback<EventDTO> callback) {
|
||||
super(new EventParameterValidator(stringConstants, existingEvents), stringConstants, callback);
|
||||
|
||||
nameEntryField = createTextBox(null);
|
||||
nameEntryField.ensureDebugId("NameTextField");
|
||||
nameEntryField.setWidth("200px");
|
||||
|
||||
venueEntryField = createTextBox(null);
|
||||
venueEntryField.ensureDebugId("VenueTextField");
|
||||
venueEntryField.setWidth("200px");
|
||||
|
||||
publicationUrlEntryField = createTextBox(null);
|
||||
publicationUrlEntryField.ensureDebugId("PublicationUrlTextField");
|
||||
publicationUrlEntryField.setWidth("200px");
|
||||
|
||||
isPublicCheckBox = createCheckbox("");
|
||||
isPublicCheckBox.ensureDebugId("IsPublicCheckbox");
|
||||
isPublicCheckBox.setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
public class EventCreateDialog extends DataEntryDialog<EventDTO> {
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
...
|
||||
|
||||
Button addCourseAreaButton = new Button(stringConstants.addCourseArea());
|
||||
addCourseAreaButton.ensureDebugId("AddCourseAreaButton");
|
||||
...
|
||||
}
|
||||
|
||||
private Widget createCourseAreaNameWidget(String defaultName, boolean isEnabled) {
|
||||
TextBox textBox = createTextBox(defaultName);
|
||||
textBox.enusreDebugId("CourseArea" + courseAreaNameEntryFields.size() + "TextField");
|
||||
textBox.setVisibleLength(40);
|
||||
textBox.setEnabled(isEnabled);
|
||||
textBox.setWidth("175px");
|
||||
|
||||
courseAreaNameEntryFields.add(textBox);
|
||||
|
||||
return textBox;
|
||||
}
|
||||
}
|
||||
|
||||
TODO
|
||||
|
||||
public class SailingEventManagementPanel extends SimplePanel implements EventRefresher {
|
||||
private void openCreateEventDialog() {
|
||||
List<EventDTO> existingEvents = new ArrayList<EventDTO>(eventProvider.getList());
|
||||
EventCreateDialog dialog = new EventCreateDialog(Collections.unmodifiableCollection(existingEvents),
|
||||
stringMessages, new DialogCallback<EventDTO>() {
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok(EventDTO newEvent) {
|
||||
createNewEvent(newEvent);
|
||||
}
|
||||
});
|
||||
dialog.ensureDebugId("EventCreateDialog");
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user