/**
@if INTERNAL
@page remotesvc Remote Test Server Setup
\tableofcontents
# Introduction {#remotesvc_intro}
The test suite for the DAP2 and DAP4 (aka DAP) protocols optionally
uses a continuously running test server to verify that the
DAP protocols can successfully be used against a remote server such
as a Unidata THREDDS Data Server or a OPeNDAP Hyrax server.
The way that this is tests is to establish two servlets running
under a Tomcat server on some machine with a known IP address
or DNS name. For example, accessing this URL.
````
https://remotetest.unidata.ucar.edu/dts/
````
will bring up a page with a variety of DAP2 accessible files.
These files are accessed by the netcdf-c test case
_netcdf-c/ncdap_test/tst_remote3.sh_
to verify that the whole
transmission and conversions process worked correctly.
Similarly, the DAP4 test case is
_netcdf-c/ncdap_test/test_remote.sh_
and it accesses the test server web page with this URL.
````
https://remotetest.unidata.ucar.edu/d4ts/
````
Setting up and Maintaining the test server involves a somewhat complex
set of tasks. This document shows how to do those tasks.
# Tomcat Setup {#remotesvc_tomcat}
The initial task is to setup a Tomcat server on some machine.
Currently the remote server is operating on Jetstream on an Ubuntu Linux
environment.
Assuming you do not already have Tomcat setup, the necessary steps are
as follows.
1. Login to your machine - let us call it "testserver.unidata.edu".
2. Use the package manager to install two packages using commands like this.
````
sudo apt-get tomcat7
sudo apt-get tomcat7-admin
````
Note that this installs Tomcat version 7. Later versions should also work.
3. Goto the tomcat7 installation, probably ''/usr/share/tomcat7'',
and modify the configuration as described in the next section.
4. Startup tomcat using the following commands.
````
cd /usr/share/tomcat7/bin
./startup.sh
````
It is possible that the startup command may need to be executed with ''sudo''.
5. Verify that tomcat is running by trying this URL in your web browser.
````
http:testserver.unidata.edu:8080
````
The port -- 8080 -- is the default for an installed tomcat. It may be that
you will need to change it as part of the configuration process.
6. Try the administration web page
````
http:testserver.unidata.edu:8080/manager
````
This should pop-up a user+password dialog box. You should fill it in
with the values you choose during configuration.
The resulting final page will be the one you use to get the dts and d4ts
servlets operating.
7. Use the commands
````
cd /usr/share/tomcat7/bin
./shutdown.sh
````
to stop the Tomcat server.
# Configuring Tomcat {#remotesvc_cfg}
In the primary Tomcat directory -- probably /usr/share/tomcat7 --
there should be a ''conf'' directory, and in that directory,
you will need to edit the file ''tomcat-users.xml''.
## Configuring tomcat-users.xml {#remotesvc_tomcat_users}
The goal here is primarily to setup a user that can login to the
Tomcat admin page to upload the dts and d4ts servlets.
Let us assume that the username we want to use is ''dapadmin''
with password ''dap''.
Edit the ''tomcat-users.xml'' file.
You will probably have to use ''sudo'' to access the file.
Insert the following near the end of the file.
````
````
## Configuring server.xml {#remotesvc_config_server_xml}
As a rule, the default settings in ''server.xml'' will work
and provide insecure access to the Tomcat server via port 8080.
This is ok if the test server is running nothing but the d4ts and dts
test servlets. Otherwise, you should investigate how to
get the Tomcat server to use https:
# Loading dts.war and d4ts.war {#remotesvc_load_war}
The next step is to actually upload the servlet files for the DAP
test servlets. We assume that you have on your local disk two files:
''dts.war'' and ''d4ts.war''. Building those servlet war files is
described in a separate section.
The specific tasks are as follows:
1. Open the web page
````
http:testserver.unidata.edu:8080/manager
````
Scroll down to the block labelled ''WAR file to deploy'',
which should have two buttons: ''Browse'' and ''Deploy''.
2. Clicking on the browse button should bring up a file dialog box.
Use the dialog box to choose ''dts.war''.
3. After choosing that file, click the ''Deploy'' button.
After some delay, this should add
a new entry in the first column near the top of the page.
That entry should be named ''/dts''.
4. If you click the ''/dts'' in the first column, then it should take you
to the DAP2 test server main page.
5. Repeat to load ''d4ts.war'' as ''/d4ts''.
# Testing the Test Server {#remotesvc_testing}
You can now test the test server by configuring and building
the netcdf-c library. In order to force the use
of the newly started test server you can either:
1. Add the option
````
--with-testservers=testserver.unidata.edu
````
This will override the defaults.
2. Edit configure.ac and find the string "svclist".
Replace the list with "testserver.unidata.edu".
This will make the new test server be the default.
After building the library, go into the directory ''ncdap_test''
and do a ''make check'' command. This should succeed.
Similarly enter the directory ''dap4_test'' and do a make check
to verify that the d4ts test server is working.
# Building d4ts.war and dts.war {#remotesvc_buildservlets}
In order to build the servlet (.war) files, you will need to
clone the Thredds directory on github: https://github.com/Unidata/tds.
Once you have a clone, you will need to enter the tds directory
and build by invoking gradle using this command.
````
./gradlew --info --no-daemon clean assemble
````
If successful, the following two files should exist
(the names may vary slightly).
1. ./dap4/d4ts/build/libs/d4ts-5.0.0-SNAPSHOT.war
2. ./opendap/dtswar/build/libs/dtswar-5.0.0-SNAPSHOT.war
Copy the two files to some more accessible place and rename them
to ''d4ts.war'' and ''dts.war'' respectively.
Use those files to upload the servlets to your Tomcat server
as described above.
# Point of Contact {#remotesvc_poc}
__Author__: Dennis Heimbigner
__Email__: dmh at ucar dot edu
__Initial Version__: 6/26/2018
__Last Revised__: 6/28/2018
@endif
*/