Skip to content

Commit 4bdde72

Browse files
committed
starting to add notes on how to add new SUTs
1 parent 122854e commit 4bdde72

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

notes_adding_suts.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
==============================================
2+
NOTES
3+
Here some high level notes on how to add new SUTs to EMB.
4+
As there are quite a few things to keep in mind, we list here the most important.
5+
==============================================
6+
7+
- before adding a SUT, its repository needs to be cloned locally, and should make sure the application can be built and
8+
run with no problem.
9+
Then, need to be able to write an Embedded driver for it, and make sure that EM can work with it.
10+
Only after this is verified, we can add an SUT to EMB.
11+
Note that we have (tens of) thousands of files in EMB, and adding new stuff does have a toll on Git.
12+
So should avoid cases of adding something and then remove them later for some issues.
13+
14+
- adding a new SUT should always be done on a branch of "develop", as needs to be reviewed.
15+
16+
- need to check which built tool is used (e.g., Maven or Gradle), and which LTS version of the JDK is used.
17+
Currently, we support from 8 on, ie, 8, 11 and 17 (and soon 21).
18+
Based on this, the SUT will belong to a folder matching such settings, eg, "jdk_8_maven".
19+
If such folder does not exist yet, it needs to be created and configured.
20+
See pom.xml from the other existing folders, to use as starting point (ie, copy&paste&update)
21+
22+
- the SUT needs to be added under the folder "cs" (which stands for "case study"), and then under a subfolder matching
23+
the type of the application, eg: "rest", "web", "graphql", "grpc" and "thrift".
24+
Note: in the past we have used further subfolder structures like "artificial", "original" and "rpc".
25+
Those are not really so needed anymore, so should avoid using them when adding new SUTs (but we are not going to
26+
refactor EMB to removed them).
27+
A special case is when an SUT is an API that also provide a GUI (eg Web browser frontend).
28+
In those cases, for REST we used the label "rest-gui".
29+
But we have not made a proper decision on how to deal with those cases yet.
30+
So, if the SUT you add falls under such a case, need to discuss first with supervisors.
31+
32+
- when adding the SUT under "jdk_X_Y/cs/<type>" for first time, add original code of the SUT WITHOUT ANY MODIFICATION,
33+
in a single commit, containing only that (ie, no custom modification, and no EM drivers).
34+
This is to be able to easily trace the original version of the SUT.
35+
Also, it is EXTREMELY DIFFICULT to review in PRs the EM drivers when you have as well thousands of SUTs files cluttering
36+
the GitHub diff views.
37+
This means there is the need to 2 distinct PRs:
38+
1) having the original SUTs files
39+
2) having all custom modifications (if any needed), pom files and their modifications, and EM drivers (embedded and external)
40+
41+
- under no circumstance should add compiled files. Also large files should be avoided if they are not strictly necessary.
42+
EMB is huge, and we should be careful of what we add, especially in terms of MBs size.
43+
44+
- note: there might be few special cases in which we need to do some minor modifications to the SUTs.
45+
Those should be rare. Might need to add specific comments stating why the SUT was modified directly in the modified files.
46+
A common example is parent pom declarations for SpringBoot applications, which mess up a lot of thins (more on this later).
47+
48+
- TODO

0 commit comments

Comments
 (0)