Skip to content

Instantly share code, notes, and snippets.

@kevinhooke
kevinhooke / gist:da53ba36f9e3755a664097236c96b74b
Last active April 24, 2025 10:42
Mocking static methods with Mockito
# No longer need to use Powermock to mock statics, this is now supported in Mockito with .mockStatic()
# Alternative approach to https://gist.github.com/kevinhooke/b4035faa5f2c215e8166936a44db4fa3
# Requires mockito-inline dependency instead of mockito-core
try (MockedStatic<ClassToMock> mock = Mockito.mockStatic(ClassToMock.class)) {
mock.when(ClassToMock::staticMethod).thenReturn(mockedReturn);
}
@kevinhooke
kevinhooke / gist:3244c4827ec66c27ffc699312eb3f509
Created April 4, 2025 09:31
Maven multi-module projects and version properties - flatten-maven-plugin
If building multi-module projects and publishing/installing to a repo, version properties like ${revision} are not
consistently replaced at install time. This results in errors when attempting to refer to one of these modules
as a dependency from another project, and instead of library:1.0.0 resolving, you'll see an error where
it's attempting to reference library:${revision} instead.
See discussion here:
https://stackoverflow.com/questions/41086512/maven-issue-to-build-one-module-using-revision-property
To fix, to need to add the flatten-maven-plugin:
https://maven.apache.org/guides/mini/guide-maven-ci-friendly.html#install-deploy
#To squash previous commits to a single commit
git rebase -i HEAD~[number of previous commits to squash]
#From the interactive list, each of the commits will be listed as 'pick'. Choose one of the commits into which
#the others should be merged, leave that as 'pick', and change all the others to 's' or 'squash'
#list projects
gcloud projects list
#list VMs
gcloud --project [project-id] compute instances list
#List Cloud Run services
gcloud --project [project-id] run services list
#Lookup GCP secret
@kevinhooke
kevinhooke / gist:c6931622b2b0ef15d962bb9f43b0d3cf
Created October 31, 2024 17:29
curl with basic auth, show headers
#show response headers
curl -I some-url
#with basic auth
curl -u 'userid:password' some-url
@kevinhooke
kevinhooke / gist:1091aac6844e4ec7fd4bc419ce0bd8dd
Created October 18, 2024 10:20
git delete/reset last local commit
git reset HEAD~
@kevinhooke
kevinhooke / gist:fb73449c17084b3cb676521300af8525
Created October 7, 2024 12:26
aws cli how to find what CloudFormation stack a resource is part of
aws cloudformation describe-stack-resources --physical-resource-id example-s3-bucketname
# Heading 1
## Heading 2
### Heading 3
# Tables
| a | b |
|---|---|
|aaa|bbb|
# Lists
@kevinhooke
kevinhooke / gist:d2f71ddfe938c9fa8a95a918d8f5ba4e
Created February 17, 2023 19:56
AWS CloudFormation template for an IAM role
Resources:
roleResourceName:
Type: AWS::IAM::Role
Properties:
RoleName: role-name
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
@kevinhooke
kevinhooke / gist:cffa89efd51b074f8b9162c0a7c8ff4c
Created November 17, 2022 22:11
AWS SDK Lambda invokAsync
If you call lambda.invokeAsync() from one lambda calling another, if the calling lambda completes/exits before the second
lambda has been successfully invoked then depending on the timing it's possible the second Lambda will not invoke sucessfully.
The SDK docs show calling invokeAsync with a callback:
const params = {
"FunctionName": "fucntion-name-to-invoke",
"InvokeArgs": JSON.stringify(payload-to-pass-to-lambda)
};
lambda.invokeAsync(params, function (error, result) {