Author: pgollucci
Date: Sun Sep 17 06:02:55 2006
New Revision: 447063
URL: http://svn.apache.org/viewvc?view=rev&rev=447063
Log:
NEW TEST:
C API -
try uploading files of various sizes particularly near, equal, and
multiples
of the 64k (65535btyes) boundary
Added:
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/10k (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/128k (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1b (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1k (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/63k (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/64k (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/65k (with props)
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c
httpd/apreq/trunk/module/t/upload.t
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/10k
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/10k?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/10k
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/128k
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/128k?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/128k
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1b
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1b?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1b
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1k
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1k?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/1k
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/63k
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/63k?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/63k
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/64k
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/64k?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/64k
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/65k
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/65k?view=auto&rev=447063
==============================================================================
Binary file - no diff available.
Propchange: httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/65k
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added:
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c?view=auto&rev=447063
==============================================================================
---
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c
(added)
+++
httpd/apreq/trunk/module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c
Sun Sep 17 06:02:55 2006
@@ -0,0 +1,100 @@
+/*
+** Copyright 2006 The Apache Software Foundation
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+#ifdef CONFIG_FOR_HTTPD_TEST
+#if CONFIG_FOR_HTTPD_TEST
+
+<Location /apreq_upload_test>
+ SetHandler apreq_upload_test
+</Location>
+
+#endif
+#endif
+
+#define APACHE_HTTPD_TEST_HANDLER apreq_upload_test_handler
+
+#include "apache_httpd_test.h"
+
+#include "apreq_module.h"
+#include "apreq_param.h"
+#include "apreq_module_apache2.h"
+#include "apreq_util.h"
+
+#include "httpd.h"
+
+
+static int apreq_upload_test_handler(request_rec *r)
+{
+ apreq_handle_t *req;
+ const apreq_param_t *param;
+
+ if (strcmp(r->handler, "apreq_upload_test") != 0) {
+ return DECLINED;
+ }
+
+ req = apreq_handle_apache2(r) ;
+
+ ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS,
+ r, "starting apreq_upload_test");
+
+ ap_set_content_type(r, "text/plain");
+
+ param = apreq_body_get(req, "filename");
+
+ if (param == NULL) {
+ ap_rputs("missing upload field", r);
+ }
+ else if (param->upload == NULL) {
+ ap_rputs("not an upload field", r);
+ }
+ else {
+ apr_table_t *info; /* upload headers */
+ apr_bucket_brigade *bb; /* upload contents */
+ apr_bucket *e;
+ apr_size_t total = 0;
+
+ info = param->info;
+ bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
+ apreq_brigade_copy(bb, param->upload);
+
+ while ((e = APR_BRIGADE_FIRST(bb)) != APR_BRIGADE_SENTINEL(bb)) {
+ apr_size_t dlen;
+ const char *data;
+
+ /* apr_bucket_read() has side effects on spool buckets, which
+ * is why we read from a copy of the brigade - to conserve memory
+ */
+ if (apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ)) {
+ ap_rprintf(r, "bad bucket read");
+ break;
+ }
+ else {
+ total += dlen;
+ }
+
+ apr_bucket_delete(e);
+ }
+
+ ap_rprintf(r, "%d", total);
+ }
+
+ ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS,
+ r, "finished apreq_upload_test");
+
+ return OK;
+}
+
+APACHE_HTTPD_TEST_MODULE(apreq_upload_test);
Added: httpd/apreq/trunk/module/t/upload.t
URL:
http://svn.apache.org/viewvc/httpd/apreq/trunk/module/t/upload.t?view=auto&rev=447063
==============================================================================
--- httpd/apreq/trunk/module/t/upload.t (added)
+++ httpd/apreq/trunk/module/t/upload.t Sun Sep 17 06:02:55 2006
@@ -0,0 +1,35 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestConfig;
+use Apache::TestRequest qw(UPLOAD_BODY);
+
+plan tests => 7, need_lwp;
+
+my $location = "/apreq_upload_test";
+
+my %files = (
+ '1b' => 1,
+ '1k' => 1024,
+ '10k' => 10240,
+ '63k' => 64512,
+ '64k' => 65536,
+ '65k' => 66560,
+ '128k' => 131072,
+ );
+
+my $server_root = Apache::Test::config()->{vars}->{serverroot};
+my $dir = "$server_root/c-modules/apreq_upload_test";
+
+foreach my $file (sort { $files{$a} <=> $files{$b} } keys %files) {
+ my $size = $files{$file};
+
+ my $result = UPLOAD_BODY($location, filename => "$dir/$file");
+ ok t_cmp(
+ $result,
+ $size,
+ "UPLOAD a file size $size btyes"
+ );
+}