OPENNTF WEBINARS
May, 2022 OpenNTF WebinarUsing The New Domino One Touch Setup

AGENDA• Welcome – Howard Greenberg and Graham Acres• Presentation Project – Oliver Busse• Presentation – Roberto Boccoadoro and JesseGallagher• Q and A - All

THANKS TO THE OPENNTF SPONSORS• HCL made a contribution to help our organization• Funds these webinars!
• Contests like Hackathons• Running the organization• Prominic donates all IT related services• Cloud Hosting for OpenNTF• Infrastructure management for HCL Domino and AtlassianServers• System Administration for day-to-day operation

THIS IS OUR COMMUNITY• Join us and get involved!
• We are all volunteers• No effort is too small• If your idea is bigger than you can do on your own, wecan connect you to a team to work on it• Test or help or modify an existing project• Write guides or documentation• Add reviews on projects / stars on Snippets

OPENNTF BOARD UPDATES• Community Projects• Catalog of User Group Presentations• Led by Oliver Busse• Channel on slack.openntf.com #presentation-project• The Future of OpenNTF• How to Evolve OpenNTF• We want your input!
• Blog and video posted soon
• Feedback via DiscordNEXT WEBINAR• Watch https://www.openntf/org/webinars for more
information• June 16th: OpenNTF Annual General MeetingASKING QUESTIONS• First Question – Will this be recorded?

• Yes, view on YouTube!!!
• https://www.youtube.com/user/OpenNTF• Use the Questions Pane in GoToWebinar• We will get to your questions at the end ofthe webinar• The speakers will respond to your questions
verbally• (not in the Questions pane)• Please keep all questions related to thetopics that our speakers are discussing!!!
• Unrelated Question => post at:• http://openntf.slack.com/

ONE TOUCH SETUP
Roberto Boccoadoro and Jesse Gallagher

ONE TOUCH SETUPFOR DOMINO V12
Roberto Boccadoro – OpenNTF Contributing Director
ELD EngineeringWHAT IS ONE-TOUCH SETUP ?
In previous versions of HCL Domino, setting up a Domino server
involved multiple steps. Starting with Domino 12, you can use onetouch Domino setup to set up a server in a single step.
You invoke one-touch Domino setup by referring to a JSON file or aset of environment variables that contain the setup configurationinformation.
Using one-touch Domino setup you can:• Set up servers• Set up an ID vault• Create and update applications and documents and enableand run agents. This feature is available only through JSON file
input.
One-touch Domino setup is supported on Domino on Docker,Windows, and UNIX platforms.

DOCUMENTATION AND SOME EXAMPLES
https://help.hcltechsw.com/domino/12.0.0/admin/inst_onetouch.html

https://help.hcltechsw.com/domino/12.0.0/admin/inst_onetouch_example_servervaultapp.html
https://github.com/nashcom/domino-startscript/tree/main/OneTouchSetup

DEMO TIME!

DOMINO ONE-TOUCHSETUP FOR DEVSWHY DOES IT MATTER FOR DEVS?
Same reasons it matters for admins - most of us dip into Domino admin eventually
Easily create dev servers
Consistency with production
Combine with Docker for an even-better version of those!
Combine that with automated tests

REFERENCES
https://help.hcltechsw.com/domino/12.0.0/admin/inst_onetouch.html
https://frostillic.us/blog/posts/2022/1/23/building-a-full-domino-image-for-junittests
https://github.com/OpenNTF/org.openntf.xsp.jakartaee/tree/2.4.0/eclipse/tests/itxsp-jakartaee

DEV SERVERSDEV SERVERS
Domino isn't dif icult to install, but this smooths the process all the more
Since con iguration is in a JSON ile, the more you put in there, the more will beconsistent between multiple installations
Con iguration Documents can do much of this, but not all of it
Make sure to put the JSON ile in Git!
(Tell your admins to do that too)

ff

fff

Use this to create commonly-used dev databases, like the Log Reader from OpenNTF

CONSISTENCY WITH PRODUCTION
Production may differ from a normal dev server in common ways:
Use of DAOS, NIFNSF, etc.
Server "Security" tab settings
Standard deployed databases
Derive your con iguration JSON from the production one to keep things commonf

This gets all the easier with Docker deployments

DOCKERDOCKER
Natural it for both production and development
Both the of icial Flexnet images and the "community"
script from GitHub will work
The GitHub script also lets you deploy to the datadir, which is handy
This helps cover con iguration outside of the OneTouch Setup ile too:Java Policy
Custom JARsfff

f

Custom Tasks/ExtMgr Addins

DOCKER COMPOSEMakes it easier to manage related volumes - DAOS,etc.
Though Domino deployments are usually singleserver, the format of the con ig ile isn't overkill

ff

But this would sure make setting up associatedservers easy too

TEST SUITESTESTCONTAINERS
https://www.testcontainers.org/
Open-source library for deploying temporary Docker containers during JUnit test
suitesMost commonly used for dependency servers, like PostgreSQL, or "true" Seleniumbrowsersf

Can get a little iddly to set up for Domino, but it works

TESTCONTAINERS
Pairs well with:
Mavenized OSGi plugins - deploy them during Docker build
NSF ODP - build with Maven and deploy+sign in the One-Touch JSONSelenium - use true Chrome and Firefox engines to test web apps without the setup hassle
Fits most naturally with HTTP-based tests, but could use other protocols
LDAP, IMAP, etc.
NRPC client -> server or server -> server
Custom ports if you're developing an addin that exposes one

TESTCONTAINERS SETUP
Can use a Docker ile, Java-based con iguration, or bothTestcontainers allows you to reference project resources to add to the container
Good for programmatic needs, like deriving the Maven version to ind the built
update siteffff

Can also use ilesystem binds, which can be handy to keep image stages reusable aslong as you're working locallyOSGI DEPLOYMENT
OSGi deployment can be tricky: the of icial image doesn't have a way to deploy random iles todata, while the community image makes timing iddly
Equinox deployment links to the rescue!
Copy/bind the update site to scratch space in the container, e.g. /local/eclipse
Create a ".link" ile containing "path=/local/eclipse"
Copy/bind to /opt/hcl/domino/notes/latest/linux/osgi/rcp/eclipse/links
They'll be picked up on irst HTTP startfffff

https://github.com/OpenNTF/org.openntf.xsp.jakartaee/blob/6cc36ef5b5376a8185dcec03aa57a0525ef9cace/eclipse/tests/it-xsp-jakartaee/src/test/java/it/org/openntf/xsp/jakartaee/nsf/docker/DominoContainer.java#L100

CONTAINER INIT
Testcontainers uses "WaitStrategy" rules to tell when a serveris up
A Domino deployment may need a combined rule:
Wait for "Adding sign bit" from AdminP signing
Wait for "HTTP Server: Started"
Wait for any custom deployment agents/plugins
With the community image, set
DOMINO_DOCKER_STDOUT=yes env variable

https://github.com/OpenNTF/org.openntf.xsp.jakartaee/blob/6cc36ef5b5376a8185dcec03aa57a0525ef9cace/eclipse/tests/it-xsp-jakartaee/src/test/java/it/org/openntf/xsp/jakartaee/nsf/docker/DominoContainer.java#L61

ACCESSING URLS
Launching the container will provide a"GenericContainer" (or subclass) instanceUse "getHost()" and "getFirstMappedPort()" todetermine the name+port that JUnit tests can use toaccess HTTP
Use "getMappedPort(80)" if you mapped morethan one port

BASIC TESTSJAX-RS provides a Client API that works well for basic
HTTP requests
Tools like Apache HttpClient would work well too

SELENIUM CONTAINERS
Testcontainers provides a Selenium container thatcan run Chrome or Firefox
The Selenium container can't see the local host name
Give your Domino container a DNS-friendly nameCreate a "Network" object using the "bridge" driver
Use "withNetwork" on your Domino and Selenium
containers to bind them to this virtual networkhttps://www.testcontainers.org/modules/
webdriver_containers/

SELENIUM TESTS
Selenium drivers implement `WebDriver`This provides tools for inding elements, clicking
buttons, etc.
The API is generally DOM-likeElements can be found with XPath, CSS, and a few
other mechanismsfPersonally, I'm an XPath kind of guy

MULTIPLE BROWSERS
Use Junit ParameterizedTests to run tests withmultiple containers
The Testcontainers image supports Chrome andFirefox
Often, one will suf ice, but it's good practice to set
this up for when you want to test cross-browser
compatibility
You can combine this with non-container drivers(e.g. Safari) if desiredfThere's an HtmlUnit driver, but it was out of datewhen I last checkedQUESTIONS?
Use the GoToWebinar Questions Pane
Please keep all questions related to thetopics that our speakers are discussing!!!
Unrelated Question => post at:
http://openntf.slack.com/