코드 확인과 질문
- [x] homebrew로 siege 설치 시작하기
brew install siege
- siege는 트래픽 툴 (스트레스 테스터)
- [ ] select가 어떻게 작동하는지 설명하기
- [ ] select를 딱 한 번만 사용했는지, 어떻게 서버가 클라이언트의 read/write를 accept 하도록 관리했는지 설명하기
- [x] select는 메인 루프 안에 있어야하고, read와 write를 동시에 체크 해야합니다. 만약 그렇지 않다면 0점이고, 평가를 멈추세요.
- [ ] There should be only one read or one write per client per select. Ask to show you the code that goes from the select to the read and write of a client. select 한 번에 1 클라이언트가 하나의 읽기 또는 쓰기만 있어야 합니다. select에서 클라이언트의 읽기 및 쓰기에 이르는 코드를 보여주고 설명하시오?
- [ ] 소켓에서 모든 read/recv/write/send를 검색하고 오류가 반환시 클라이언트가 제거되는지 확인
- [ ] 모든 read/recv/write/send를 검색하고 반환된 값이 잘 확인 되어있는지 확인하시오 (-1이나 0만 확인하는 것은 좋지 않고, 둘 다 확인하세요)
- read() > 0 or read() ==0 or read() < 0 일때 예외처리 다 할 것
- [x] If a check of errno is done after read/recv/write/send. Please stop the evaluation and put a mark to 0
- 읽기 / 수신 / 쓰기 / 전송 함수에서 errno 확인이 완료된 경우 평가를 중지하고 0으로 표시하시오?
- [ ] select를 통하지 않은 그 어떤 fd의 읽기나 쓰기도 엄격히 금지되어 있습니다.
config
config 파일에서 다음을 수행할 수 있는지 확인하고 결과를 테스트 하시오:
- [x] 여러 서버를 다른 포트로 설정
- [ ] 여러 서버를 다른 host name으로 설정 (이런 걸 써보세요: curl –resolve example.com:80:127.0.0.1 http://example.com/)
- [ ] default error 페이지 설정(404 에러를 변경하려고 해보세요)
- [ ] 클라이언트 body를 제한해보세요. (curl -X POST -H “Content-Type: plain/text” –data “BODY는 여기고 제한보다 짧거나 길게 뭔가 써보세요”)
- [ ] 서버의 루트를 다른 디렉토리로 설정
- [ ] 디렉토리를 요청할 경우 검색할 default 파일 설정
- [ ] 특정 루트를 accept할 메소드 리스트 설정 setup a list of method accepted for a certain route (ex: setup only HEAD on a route and use curl with and without option -X HEAD)
테스터 돌리기