Skip to content

Instantly share code, notes, and snippets.

saurabh-sp-tripathi /
Created Jul 11, 2019
quick copy paste for jenkins script console
def methods = obj.getClass().methods.collect { }
println methods.each {println it}

//courtesy: my week memory, lazyness and
saurabh-sp-tripathi /
Last active Aug 15, 2018
A use case where singleton can be bad even for the stateless object

While working on TestAutomation, we introduced spring IoC and had a look at PageObjects, there are totally stateless so why dont' let just make 'em singleton?

IMO it will burden unecessary memory requirements on JVM, but given today's machine where we usaually have many GB of RAM I am not sure how significant can be the impact.

Let's say we have 100 pageObjects, if 20 instance create a load of 1 MB, 100 will create 5 MB.

If you are using singleton for before the test spring has to load the 10MB, although it will be one time cost due to context-caching

saurabh-sp-tripathi /
Last active Aug 15, 2018
this is in progress note on why prefer non static method over static

As I said I would always prefer non-static over static method.

  • I am big fan of pure/stateless function,there easy to understand and test, Static method as pure function i.e stateless are not bad but the real problem is to maintain the decipline to keep the 'em stateless.
  • Testablitly: Class B has static method, now consider
class A  {

	public void bar() {
		//some important code;// How mock foo bahaviour? may be fiddling classloader with PowerMock but that comes with some bagage too
		//some more important code
saurabh-sp-tripathi /
Created Aug 14, 2018
a temp gist, this code is used in testng to create combination of parameter in dataProvider
public static class ParamSetListBuilder {
private List<List> paramList = new ArrayList<>();
private Logger logger = LoggerFactory.getLogger(getClass());
public ParamSetListBuilder addParams(List paramListToCombine) {
addParamsAtIndex(paramListToCombine, Helper.calcParamIndex(paramList));
return this;
  • cancel action : C-g
  • query/replace in selected : C-<space> select region >>> M-x >> replace-string >> ....
  • copy/cut paste : M-w/C-w C-y
  • del i.e kill line: M-x
  • list bufferes : C-x C-b ; close it : C-x 1
  • Switch buffers : C-x b or select from C-x C-f
  • Save all buffer : C-x s this will ask you for all unsaved buffer
  • File ops [todo: anything from below if repeated above, delete the above one]
	C-x C-f		Find file

Set build number of a job: Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)

saurabh-sp-tripathi /
Created Jul 13, 2018
A brief Git introduction

Why Git:

  • Local and distributed :
    • So what?
    • Local is faster : Think about it, reading from HDD/RAM is faster than reading from each time.
    • It not only saves your time on local operations like read history, diff, work offline [-who doesn’t have internet??] but also makes collaborating tools like Jenkins faster to act.
  • Branch policies & Code review (GitHub, GitLap, VSTS ets): Tools made upon git have eligant feature like
    • Code review: Following pull request workflow (more on this later), you can set branch policies to make sure that a code is reviewed before getting into the branch.
    • Branch policies to prevent anyone directly committing into the branch like prod branch 'master' (similar to trunk)
  • Lightweight:

Vim task

  • write something "file1", "file2".... or

match anything : .* eg: regex \(.*\) matches (a, b, c, d) or (a..dlldkfjdlkjaoi) or (9788E98e7r8e((&^&*^&)

  • find & replace
==> "chrome".equalsIgnoreCase(browserName)

saurabh-sp-tripathi /
Last active Jul 2, 2018
This is list of productive (for me) alias for windows machine