Skip to content

Instantly share code, notes, and snippets.

@vkorobkov
vkorobkov / JFixturesExtension.groovy
Created October 31, 2018 09:58
Declarative JFixtures with JUnit5/Spring integration tests
import com.github.vkorobkov.jfixtures.JFixtures
import groovy.transform.CompileStatic
import groovy.transform.NamedParam
import groovy.transform.NamedVariant
import groovy.util.logging.Slf4j
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback
import org.junit.jupiter.api.extension.ExtensionContext
import org.junit.jupiter.api.extension.ExtensionContext.Store
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.test.context.junit.jupiter.SpringExtension
@vkorobkov
vkorobkov / IntegrationTest.groovy
Created October 31, 2018 09:53
Make JUnit5 using the same spring context in nested classes/tests
import groovy.transform.AnnotationCollector
import org.junit.jupiter.api.Tag
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.ActiveProfiles
@SameSpringContextSupport
@SpringBootTest
@AutoConfigureMockMvc
@AnnotationCollector
@vkorobkov
vkorobkov / shitlinks.md
Created June 15, 2018 09:50
shitlinks.md
@vkorobkov
vkorobkov / mysql_to_ms_sql.sh
Created June 1, 2017 09:24
How to copy huge MySql tables into MS SQL with a single script
#!/bin/sh
export TABLE=
export SQLCMD=/opt/mssql-tools/bin/sqlcmd
export MYSQL_HOST=
export MYSQL_DB=
export MYSQL_USER=read_only
export MYSQL_PASS=
@vkorobkov
vkorobkov / quicksort.groovy
Created December 29, 2016 06:06
Easy quick sort function writtern in Groovy
def quickSort(List list, beg = 0, end = list.size() - 1) {
if (list.size() < 2) {
return
}
def beg0 = beg
def end0 = end
def marker = list[beg]
while(true) {
@vkorobkov
vkorobkov / DecoratedSet.java
Last active October 5, 2016 18:31
When you need a custom hashcode/equals in a Set
import java.util.AbstractCollection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class DecoratedSet<K> extends AbstractCollection<K> implements Set<K> {
@FunctionalInterface
public interface Decorator<K> {
Wrapped<K> wrap(K element);
@vkorobkov
vkorobkov / ThreadSafeSql.groovy
Last active April 17, 2019 11:42
Thread-safe singleton version of groovy.sql.Sql
import groovy.sql.Sql
import javax.sql.DataSource
class ThreadSafeSql extends Sql implements GroovyInterceptable {
private final ThreadLocal<Sql> threadLocal = new ThreadLocal<>()
private final DataSource dataSource
ThreadSafeSql(DataSource dataSource) {
super(dataSource)
this.dataSource = dataSource
@vkorobkov
vkorobkov / GenerateFixtures.groovy
Created September 14, 2016 07:55
Ruby-like fixtures for the groovy+maven+spring project
import org.yaml.snakeyaml.Yaml
startTime = System.currentTimeMillis()
FIXTURES_DIR = "${project.basedir}/src/test/resources/fixtures"
OUTPUT_DIR = project.build.testOutputDirectory
OUTPUT_FILE = "$OUTPUT_DIR/test-data.sql"
new File(OUTPUT_DIR).mkdir()