This commit is contained in:
insanity 2016-11-16 12:33:37 +09:00
commit d4e0049681
14 changed files with 185 additions and 396 deletions

View File

@ -5,7 +5,8 @@ package com.loafle.bridge.discoveryport.constant;
*/ */
public enum DirectionType { public enum DirectionType {
Send("S"), Send("S"),
Recv("R"); Recv("R"),
Timeout("T");
private String stringValue; private String stringValue;
DirectionType(String string) {stringValue = string;} DirectionType(String string) {stringValue = string;}

View File

@ -6,7 +6,8 @@ package com.loafle.bridge.discoveryport.constant;
public enum PortType { public enum PortType {
TCP("TCP"), TCP("TCP"),
UDP("UDP"); UDP("UDP"),
TLS("TLS");
private String stringValue; private String stringValue;
PortType(String string) {stringValue = string;} PortType(String string) {stringValue = string;}

View File

@ -10,28 +10,44 @@ import java.util.List;
public class DiscoveryPort { public class DiscoveryPort {
@Id @Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private long id; private long id;
// @ManyToOne // @ManyToOne
// @JoinColumn(name = "HOST_ID", nullable = false) // @JoinColumn(name = "HOST_ID", nullable = false)
// private DiscoveryHost host; // private DiscoveryHost host;
//public DiscoveryHost getHost() {
@Column(name = "PORT_TYPE",nullable = false) // return host;
//}
//
// public void setHost(DiscoveryHost host) {
// this.host = host;
// }
@Column(nullable = false)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private PortType portType; private PortType portType;
@Column(name = "PORT_NUMBER",nullable = false) @Column(nullable = false)
private short portNumber; private short portNumber;
@OneToMany(mappedBy = "port" , fetch = FetchType.LAZY) @OneToMany(mappedBy = "port")
private List<ServiceScanHistory> histories; private List<ServiceScanHistory> histories;
@Column(name = "CREATE_DATE", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false, insertable = false, updatable = false) // @OneToMany(mappedBy = "port")
// private List<DiscoveryService> services;
//
// public List<DiscoveryService> getServices() {
// return services;
// }
//
// public void setServices(List<DiscoveryService> services) {
// this.services = services;
// }
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false, insertable = false, updatable = false)
private Date createDate; private Date createDate;
@Column(name = "UPDATE_DATE", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false, insertable = false) @Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false)
private Date updateDate; private Date updateDate;
@ -83,6 +99,9 @@ public class DiscoveryPort {
} }
public Date getUpdateDate() { public Date getUpdateDate() {
if (this.updateDate == null) {
this.updateDate = new Date();
}
return updateDate; return updateDate;
} }

View File

@ -13,28 +13,38 @@ import java.util.Date;
public class ServiceScanHistory { public class ServiceScanHistory {
@Id @Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private long id; private long id;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PORT_ID") @JoinColumn
private DiscoveryPort port; private DiscoveryPort port;
@Column(name = "SERVICE_NAME", nullable = false) @Column(nullable = false)
private String serviceName; private String serviceName;
@Column(name = "DIRECTION", nullable = false) @Column(nullable = false)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private DirectionType direction; private DirectionType direction;
@Column(name = "CREATE_DATE", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false, insertable = false, updatable = false) @Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false, insertable = false, updatable = false)
private Date createDate; private Date createDate;
@Lob @Lob
@Column(name = "PACKET", nullable = false) @Column(nullable = false)
private byte[] packet; private byte[] packet;
@Column
private String description;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public ServiceScanHistory() {} public ServiceScanHistory() {}
public ServiceScanHistory(DiscoveryPort port, String serviceName, DirectionType direction, byte[] packet, Date createAt) { public ServiceScanHistory(DiscoveryPort port, String serviceName, DirectionType direction, byte[] packet, Date createAt) {

View File

@ -1,7 +1,23 @@
package com.loafle.bridge.discoveryservice.controller; package com.loafle.bridge.discoveryservice.controller;
import com.loafle.bridge.discoveryservice.entity.DiscoveryService;
import com.loafle.bridge.discoveryservice.repository.DiscoveryServiceRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/** /**
* Created by root on 16. 11. 15. * Created by root on 16. 11. 15.
*/ */
@RestController
public class DiscoveryServiceController { public class DiscoveryServiceController {
@Autowired
DiscoveryServiceRepository repository;
@RequestMapping(value = "/discoveryService/{id}", method = RequestMethod.GET)
public DiscoveryService get(@PathVariable(value = "id") long id) {
return repository.findOne(id);
}
} }

View File

@ -1,7 +1,75 @@
package com.loafle.bridge.discoveryservice.entity; package com.loafle.bridge.discoveryservice.entity;
import com.loafle.bridge.discoveryport.constant.PortType;
import javax.persistence.*;
import java.util.Date;
/** /**
* Created by root on 16. 11. 15. * Created by root on 16. 11. 15.
*/ */
@Entity
public class DiscoveryService { public class DiscoveryService {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
// @ManyToOne
// @JoinColumn(nullable = false)
// private DiscoveryPort port;
// public DiscoveryPort getPort() {
// return port;
// }
//
// public void setPort(DiscoveryPort port) {
// this.port = port;
// }
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private PortType portType;
@Column(nullable = false)
private String serviceName;
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false, insertable = false, updatable = false)
private Date createDate;
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP", nullable = false)
private Date updateDate;
public DiscoveryService() {}
public DiscoveryService(PortType t, String serviceName) {
this.portType = t;
this.serviceName = serviceName;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getUpdateDate() {
if (this.updateDate == null) {
this.updateDate = new Date();
}
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
} }

View File

@ -1,7 +1,12 @@
package com.loafle.bridge.discoveryservice.repository; package com.loafle.bridge.discoveryservice.repository;
import com.loafle.bridge.discoveryservice.entity.DiscoveryService;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
/** /**
* Created by root on 16. 11. 15. * Created by root on 16. 11. 15.
*/ */
public class DiscoveryServiceRepository { @RepositoryRestResource(collectionResourceRel = "discoveryService", path = "discoveryService")
} public interface DiscoveryServiceRepository extends JpaRepository<DiscoveryService, Long> {
}

View File

@ -1,55 +0,0 @@
package hello;
import hello.entity.Member;
import hello.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by jackdaw on 16. 11. 9.
*/
@RestController
public class HelloController {
@Autowired
MemberRepository memberRepository;
// @RequestMapping("/member")
// public List<Member> index() {
// return memberRepository.findAll();
// }
@RequestMapping(value = "/member/{id}", method = RequestMethod.GET)
public Member get(@PathVariable(value = "id") long id) {
return memberRepository.findOne(id);
}
@RequestMapping(value = "/member", method = RequestMethod.GET)
@ResponseBody
public List<Member> getList() {
return memberRepository.findAll();
}
// @RequestMapping(value = "/member/{id}", method = RequestMethod.PATCH)
// @ResponseBody
// public Member patch(@PathVariable(value = "id") long id, @RequestBody Member member) {
// memberRepository.save(member);
// return member;
// }
//
// @RequestMapping(value = "/member/{id}", method = RequestMethod.PUT)
// @ResponseBody
// public Member update(@PathVariable(value = "id") long id, @RequestBody Member member) {
// memberRepository.save(member);
// return member;
// }
//
// @RequestMapping(value = "/member/{id}", method = RequestMethod.DELETE)
// @ResponseBody
// public List<Member> delete(@PathVariable(value = "id") long id) {
// memberRepository.delete(id);
// return memberRepository.findAll();
// }
}

View File

@ -1,17 +0,0 @@
package hello;
/**
* Created by jackdaw on 16. 11. 11.
*/
//@Configuration
//public class JPAConfiguration extends RepositoryRestMvcConfiguration {
//
// @Override
// protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
// config.exposeIdsFor(Member.class);
// //config.setDefaultMediaType(MediaType.APPLICATION_JSON);
// //config.useHalAsDefaultJsonMediaType(false);
// }
//}

View File

@ -1,60 +0,0 @@
package hello.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*;
/**
* Created by jackdaw on 16. 11. 10.
*/
@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column
private String name;
@Column
private int age;
public Member() {}
public Member(String name, int age) {
this.name = name;
this.age = age;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "[" + id + "] name = " + name + ", age = " + age;
}
}

View File

@ -1,19 +0,0 @@
package hello.repository;
import hello.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
/**
* Created by jackdaw on 16. 11. 10.
*/
@RepositoryRestResource(collectionResourceRel = "member", path = "member")
public interface MemberRepository extends JpaRepository<Member,Long> {
// List<Member> findByNameAndAgeLessThan(String name, int age);
//
// @Query("select t from Member t where name=:name and age < :age")
// List<Member> findByNameAndAgeLessThanSQL(@Param("name") String name, @Param("age") int age);
//
// List<Member> findByNameAndAgeLessThanOrderByAgeDesc(String name, int age);
}

View File

@ -0,0 +1,48 @@
package com.loafle.bridge.discoveryservice.repository;
import com.loafle.bridge.Application;
import com.loafle.bridge.discoveryport.constant.PortType;
import com.loafle.bridge.discoveryservice.entity.DiscoveryService;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Created by root on 16. 11. 16.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
public class DiscoveryServiceRepositoryTest {
@Autowired
private DiscoveryServiceRepository repo;
private Logger log = Logger.getLogger(this.getClass());
@Before
public void Before() {
repo.save(new DiscoveryService(PortType.TLS,"HTTP"));
repo.save(new DiscoveryService(PortType.TCP,"WMI"));
repo.save(new DiscoveryService(PortType.UDP,"DNS"));
}
@After
public void After() {
repo.deleteAll();
}
@Test
public void TestBefore() {
List<DiscoveryService> l = repo.findAll();
assertEquals(3, l.size());
}
}

View File

@ -1,155 +0,0 @@
package hello;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.loafle.bridge.Application;
import hello.entity.Member;
import hello.repository.MemberRepository;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.WebIntegrationTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
/**
* Created by jackdaw on 16. 11. 10.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
@WebIntegrationTest
public class HelloControllerTest {
private MockMvc mockMvc;
// @Autowired
// MemberRe controller;
@Autowired
MemberRepository repo;
Logger logger = Logger.getLogger(this.getClass());
@Before
public void setUp() throws Exception {
mockMvc = standaloneSetup(repo).build();
repo.save(new Member("1",1));
repo.save(new Member("2",2));
repo.save(new Member("2",2));
}
private String jsonStringFromObject(Object object) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(object);
}
@After
public void tearDown() throws Exception {
repo.deleteAll();
}
@Test
public void index() throws Exception {
String jsonString = jsonStringFromObject(repo.findAll());
logger.info(jsonString);
mockMvc.perform(get("/member")).andExpect(status().isOk()).andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
.andExpect(content().string(equalTo(jsonString)));
}
@Test
public void getMember() throws Exception {
List<Member> list = repo.findAll();
String jsonString = this.jsonStringFromObject(list.get(0));
logger.info(jsonString);
mockMvc.perform(get("/member/{id}", list.get(0).getId()))
.andExpect(status().isOk())
.andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
.andExpect(content().string(equalTo(jsonString)));
}
@Test
public void createMember() throws Exception {
Member b = new Member("111",1111);
String jsonString = this.jsonStringFromObject(b);
MvcResult result = mockMvc.perform(post("/member")
.contentType(MediaType.APPLICATION_JSON)
.content(jsonString))
.andExpect(status().isOk())
.andReturn();
logger.info(result.getResponse().getContentAsString());
}
@Test
public void patchMember() throws Exception {
List<Member> list = repo.findAll();
String jsonString = this.jsonStringFromObject(list.get(0));
logger.info(jsonString);
list.get(0).setName("test");
list.get(0).setAge(9999);
jsonString = this.jsonStringFromObject(list.get(0));
MvcResult result = mockMvc.perform(
patch("/member/{id}",list.get(0).getId()).
contentType(MediaType.APPLICATION_JSON).
content(jsonString)).
andExpect(status().isOk()).
andReturn();
logger.info(result.getResponse().getContentAsString());
}
@Test
public void updateMember() throws Exception {
List<Member> list = repo.findAll();
String jsonString = this.jsonStringFromObject(list.get(0));
logger.info(jsonString);
list.get(0).setName("test");
list.get(0).setAge(9999);
jsonString = this.jsonStringFromObject(list.get(0));
MvcResult result = mockMvc.perform(
put("/member/{id}",list.get(0).getId()).
contentType(MediaType.APPLICATION_JSON).
content(jsonString)).
andExpect(status().isOk()).
andReturn();
logger.info(result.getResponse().getContentAsString());
}
@Test
public void deleteMember() throws Exception {
List<Member> list = repo.findAll();
long id = list.get(0).getId();
String jsonString = this.jsonStringFromObject(list);
list.remove(0);
String compareString = this.jsonStringFromObject(list);
mockMvc.perform(delete("/member/{id}", id)
.content(jsonString))
.andExpect(status().isOk())
.andExpect(content().string(equalTo(compareString)));
}
}

View File

@ -1,73 +0,0 @@
package hello.repository;
import com.loafle.bridge.Application;
import hello.entity.Member;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Created by jackdaw on 16. 11. 10.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
public class MemberRepositoryTest {
@Autowired
MemberRepository repo;
@Before
public void setup() {
repo.deleteAll();
repo.save(new Member("1",1));
repo.save(new Member("2",2));
repo.save(new Member("3",3));
repo.save(new Member("4",4));
repo.save(new Member("5",5));
}
@After
public void down() {
repo.deleteAll();
}
@Test
public void create() {
Member m = new Member("test",1);
Member n = repo.save(m);
assertEquals(m.getId(),n.getId());
}
@Test
public void getAll() {
assertEquals(repo.findAll().size(),5);
}
@Test
public void delete() {
List<Member> l = repo.findAll();
Member m = l.get(0);
repo.delete(m.getId());
assertEquals(repo.findAll().size(),4);
}
@Test
public void update() {
List<Member> l = repo.findAll();
Member m = l.get(0);
m.setName("TTTTT");
Member n = repo.save(m);
assertEquals(m.getName(),n.getName());
}
}